我想扩展一个小型中间件系统以增加可靠的FIFO通信,因此代理之间的连接需要是FIFO。目前,中间件的通信层支持套接字和RMI。但是我不认为socket和RMI可以为消息对象提供FIFO排序。
有没有办法在RMI的消息对象级别强制执行FIFO排序?
到目前为止,我已经得出结论,使用类似JMS的通信层来保证FIFO排序。这有意义吗?还是有其他轻量级替代品?
我认为另一种选择是使用消息编号并通过在套接字或RMI上编写一个小协议来实现这种排序,但它似乎需要很多工作并且需要一些专业知识来处理特殊情况。
答案 0 :(得分:2)
有几个可用的开源邮件系统,例如RabbitMQ,ActiveMQ,ZeroMQ和HornetQ - 一旦您设置了它们他们都非常容易使用。如果您只是在线程之间进行通信而不是进程之间进行通信,那么您可以使用BlockingQueue或PriorityBlockingQueue(我使用RabbitMQ / ActiveMQ / ZeroMQ / HornetQ进行通信的大多数系统都可以使用在进程之间,然后使用[Priority] BlockingQueue)在线程之间传播消息。