我是春季批次的新手。我想在不使用 jms 的情况下在多个服务器上使用远程分块和分区技术运行 spring 批处理作业。我想使用 HTTP Invoker 或 RMI 而不是 jms。但是,远程分块和分区的所有示例都使用 jms。我找不到使用 HTTP Invoker 或 RMI 的示例。我想知道有没有可能。。
英语不是我的母语.. 请原谅我的任何错误
我是春季批次的新手。我想在不使用 jms 的情况下在多个服务器上使用远程分块和分区技术运行 spring 批处理作业。我想使用 HTTP Invoker 或 RMI 而不是 jms。但是,远程分块和分区的所有示例都使用 jms。我找不到使用 HTTP Invoker 或 RMI 的示例。我想知道有没有可能。。
英语不是我的母语.. 请原谅我的任何错误
您可以使用任何形式的通信进行远程分区。但是,远程分块确实需要持久通信,这就是通常使用 JMS 的原因。
您看到 JMS 进行远程分区的原因是,使用 JMS 配置集群环境比使用 HTTP 更容易。这样做的原因是每个人(主人和所有奴隶)只需要知道队列在哪里交谈。使用HTTP作为通信机制,需要主从知道的很多。master 需要知道如何在所有 slave 上平均分配分区,以及每个 slave 将请求发送到哪里。所有的奴隶也需要知道主人在哪里。JMS 的集中式分发模型还允许您在处理期间动态添加新的从属服务器,而 HTTP 要求您通过某种方式向主服务器注册一个新的从属服务器。
远程分块需要持久通信的原因是远程分区模型中没有任何内容可以防止项目被处理两次,因为它是通过网络发送的(远程分区只是发送数据的描述,而作业存储库会阻止数据从被处理两次)。
您可以在我的回答中阅读有关两者之间区别的更多信息:Difference between spring batch remote chunking and remote partitioning