本文介紹了消息隊列、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和發布/訂閱之間的區別是什么?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,