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
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01