ActiveMQ——activemq的詳細說明,queue、topic的區別(精選)


 

 

JMS中定義了兩種消息模型:點對點(point to point, queue)發布/訂閱(publish/subscribe,topic)。主要區別就是是否能重復消費

點對點:Queue,不可重復消費

消息生產者生產消息發送到queue中,然后消息消費者從queue中取出並且消費消息。
消息被消費以后,queue中不再有存儲,所以消息消費者不可能消費到已經被消費的消息。
Queue支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費、其它的則不能消費此消息了。
當消費者不存在時,消息會一直保存,直到有消費消費

發布/訂閱:Topic,可以重復消費

消息生產者(發布)將消息發布到topic中,同時有多個消息消費者(訂閱)消費該消息。
和點對點方式不同,發布到topic的消息會被所有訂閱者消費
當生產者發布消息,不管是否有消費者。都不會保存消息

 

 

Jms規范里的兩種message傳輸方式Topic和Queue,兩者的對比如下表():

 

 

 

  Topic Queue
概要 Publish  Subscribe messaging 發布訂閱消息 Point-to-Point  點對點
有無狀態 topic數據默認不落地,是無狀態的。

Queue數據默認會在mq服務器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kr-store\data下面。也可以配置成DB存儲。

完整性保障 並不保證publisher發布的每條數據,Subscriber都能接受到。 Queue保證每條數據都能被receiver接收。
消息是否會丟失 一般來說publisher發布消息到某一個topic時,只有正在監聽該topic地址的sub能夠接收到消息;如果沒有sub在監聽,該topic就丟失了。 Sender發送消息到目標Queue,receiver可以異步接收這個Queue上的消息。Queue上的消息如果暫時沒有receiver來取,也不會丟失。
消息發布接收策略 一對多的消息發布接收策略,監聽同一個topic地址的多個sub都能收到publisher發送的消息。Sub接收完通知mq服務器 一對一的消息發布接收策略,一個sender發送的消息,只能有一個receiver接收。receiver接收完后,通知mq服務器已接收,mq服務器對queue里的消息采取刪除或其他操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM