The difference between a Message Queue, EventBus and a Pub/Sub?(消息队列、EventBus和发布/订阅之间的区别是什么?)
问题描述
我混淆了消息队列的概念(例如ActiveMQ、RabbitMQ、ZeroMQ)和EventBus(例如Guava Event Bus、Akka EventBus)
我认为MQ和eventBus都使用发布/订阅模式。与芭乐相比,MQ似乎更强大、更笨重。
但真正的区别是什么呢?EventBus是否与MQ相同?
推荐答案
消息通常用于进程间通信和机器之间的消息发送。您可以将事件封装在消息中(例如,作为XML或JSON),并使用消息传输此事件。Tibco RV、JMS、IBM或Hornet MQ,.
事件通常用于应用程序间通信。例如,在线程之间通信或对GUI应用程序中的用户输入做出反应(考虑Swing事件、Guava等)。
A队列是消息的1对1目的地。消息仅由其中一个使用接收方接收(请注意:一致使用‘主题客户端’的订阅方和队列客户端的接收方可以避免念力)。发送到队列的消息将存储在磁盘或内存中,直到有人将其接收或过期。
A总线是一对多分发模型。此模型中的目的地通常称为主题或主题。相同的发布消息由所有消费订户接收。你也可以称之为"广播"模式。您可以将主题等同于分布式计算的观察者设计模式中的主题。一些消息总线提供程序有效地选择将其实现为UDP而不是TCP。对于主题,信息传递是"即发即忘"--如果没有人听,信息就会消失。如果这不是您想要的,您可以使用"持久订阅"。
如果您将所有这些放在一起,您将拥有这些:
消息队列:基于队列的消息传递中间件有IBM MQ、JMS/ActiveMQ Queues、Hornet MQ
事件队列:基于队列的编程框架。您可以使用任何实现Java Queue接口的类来实现这一点。例如BlockingQueue
消息总线:发布/订阅消息传递中间件,例如JMS/ActiveMQ Topics、TIBCO RV。消息通过TCP或UDP发送到另一个进程。有关详细信息,请参阅JMS Topic vs Queues
事件总线:基于发布/订阅的编程框架。芭乐事件总线,观察者设计模式
这篇关于消息队列、EventBus和发布/订阅之间的区别是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:消息队列、EventBus和发布/订阅之间的区别是什么?


- 获取数字的最后一位 2022-01-01
- 转换 ldap 日期 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01