我正在尝试找到能够处理以下内容的最轻量级消息总线(队列?):
A,B,C和公共汽车都在不同的机器上。
答案 0 :(得分:1)
您可能最好使用队列(例如ActiveMQ)来实现此目的,并且对于lightweight
要求,您可以使用MQTT作为极其轻量级的基础协议。
请参阅: http://activemq.apache.org/mqtt.html
针对您的情况:
您的制作人A将连接到队列
您的消费者B将连接到同一个队列并侦听某个主题(例如/topic/onlyBisInterested
)。它还会订阅/topic/everyoneIsInterested
您的消费者C将连接到队列并收听/topic/everyoneIsInterested
/topic/everyoneIsInterested
发布消息,B和C都会收到此消息。你可以玩很多话题。您可以基于通配符,精确基础或其任何组合来拥有主题匹配规则。还有一些层次结构(例如/ a / b / *)可以设置接受(/ a / b / c或/ a / b / d或其他任何东西)。
您还可以通过SSL传输数据并在需要时使用身份验证,并使用消息持久性和保证传递,以防一个/多个节点出现故障。
我建议您阅读官方文档并确定它是否适合您。还有许多其他免费或商业队列,大多数/所有队列都能满足您的要求,因为它们非常标准。
答案 1 :(得分:0)
我们编写了一个基于ZeroMq(传输),Cassandra(对等发现和持久性)和Protobuf(序列化)的点对点消息总线Zebus。它支持routing of messages based on properties of the messages。
它是开源和生产测试https://github.com/Abc-Arbitrage/Zebus
Zebus正在积极开发中,并且在内部生产中使用很多。目前只有.NET语言绑定。