我有一个由几个Java服务组成的应用程序,它们通过直接RMI线路进行通信。我即将使用JMS / ActiveMQ将其升级为更现代和更稳定的东西。
最常见的情况是连接到中央服务和执行请求的许多进程。 - >这可以在JMS中使用命名请求队列和命名或临时响应队列来实现。
通过上述链接,进程还将自己注册为具有中央服务的事件侦听器,中央服务维护它们的列表,并通过直接通过RMI将事件发送给每个订阅者来调度事件。 - > JMS主题是理想的替代品。
第三种情况更复杂:我还有几个流程将自己注册为拥有中央服务的工作人员。这个中央服务必须维护这些工作人员的池,这些工作人员可以动态地和意外地启动,停止和重新启动。
然后,池将为特定工作人员分配任务(例如负载最低的工作人员,因此不进行广播或随机选择)。但我不认为这会非常困难,核心问题是让游泳池保持最新状态。
工作人员还需要回复有关正在运行的任务或一般工作人员状态的信息(例如当前负载,或者是否接受新任务)。
我如何以稳定的方式在JMS之上实现这一点?那么,解释如何完全实现这个复杂的场景可能有点多,但是假设队列和主题类通道的可用性,是否存在可以应用的一般设计模式?