本文介紹了消息隊(duì)列、EventBus和發(fā)布/訂閱之間的區(qū)別是什么?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我混淆了消息隊(duì)列的概念(例如ActiveMQ、RabbitMQ、ZeroMQ)和EventBus(例如Guava Event Bus、Akka EventBus)
我認(rèn)為MQ和eventBus都使用發(fā)布/訂閱模式。與芭樂相比,MQ似乎更強(qiáng)大、更笨重。
但真正的區(qū)別是什么呢?EventBus是否與MQ相同?
推薦答案
消息通常用于進(jìn)程間通信和機(jī)器之間的消息發(fā)送。您可以將事件封裝在消息中(例如,作為XML或JSON),并使用消息傳輸此事件。Tibco RV、JMS、IBM或Hornet MQ,.
事件通常用于應(yīng)用程序間通信。例如,在線程之間通信或?qū)UI應(yīng)用程序中的用戶輸入做出反應(yīng)(考慮Swing事件、Guava等)。
A隊(duì)列是消息的1對(duì)1目的地。消息僅由其中一個(gè)使用接收方接收(請(qǐng)注意:一致使用‘主題客戶端’的訂閱方和隊(duì)列客戶端的接收方可以避免念力)。發(fā)送到隊(duì)列的消息將存儲(chǔ)在磁盤或內(nèi)存中,直到有人將其接收或過期。
A總線是一對(duì)多分發(fā)模型。此模型中的目的地通常稱為主題或主題。相同的發(fā)布消息由所有消費(fèi)訂戶接收。你也可以稱之為”廣播”模式。您可以將主題等同于分布式計(jì)算的觀察者設(shè)計(jì)模式中的主題。一些消息總線提供程序有效地選擇將其實(shí)現(xiàn)為UDP而不是TCP。對(duì)于主題,信息傳遞是”即發(fā)即忘”–如果沒有人聽,信息就會(huì)消失。如果這不是您想要的,您可以使用”持久訂閱”。
如果您將所有這些放在一起,您將擁有這些:
消息隊(duì)列:基于隊(duì)列的消息傳遞中間件有IBM MQ、JMS/ActiveMQ Queues、Hornet MQ
事件隊(duì)列:基于隊(duì)列的編程框架。您可以使用任何實(shí)現(xiàn)Java Queue接口的類來實(shí)現(xiàn)這一點(diǎn)。例如BlockingQueue
消息總線:發(fā)布/訂閱消息傳遞中間件,例如JMS/ActiveMQ Topics、TIBCO RV。消息通過TCP或UDP發(fā)送到另一個(gè)進(jìn)程。有關(guān)詳細(xì)信息,請(qǐng)參閱JMS Topic vs Queues
事件總線:基于發(fā)布/訂閱的編程框架。芭樂事件總線,觀察者設(shè)計(jì)模式
這篇關(guān)于消息隊(duì)列、EventBus和發(fā)布/訂閱之間的區(qū)別是什么?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,