rabbitmq之 Publish/Subscribe

應用場景:把一條message 發送給多個consumers去處理

相關元素:

exchange: 使用exchange type fanout,定義新的exchange和新的名字,不用默認的empty string exchange direct type。

queue: 定義queue,server 會自動跟生產的queue一個臨時的名字,只所以定義queue時不給名字,是因爲正常的queue的名字是用來跟routingkey做match

的,但由於使用了fanout type的exchange,此類型的exchange會忽略到routingkey,而把接收到的messages都發送給binding在此exchange的queues。

定義一個名字爲logs的type爲fanout的exchange:

channel.exchangeDeclare("logs", "fanout");

查看所有已經定義存在的exchange:

rabbitmqctl list_exchanges
結果中以amq.開頭的exchange是默認創建的,和一個空字符的direct type的exchange

定義一個臨時的queue:返回server自動爲其創建的queue 名字
String queueName = channel.queueDeclare().getQueue();

下一步就是binding 創建的exchange和queue:
channel.queueBind(queueName, "logs", "");
查看所有存在的exchange與queue的綁定:
rabbitmqctl list_bindings
詳情見官網:http://www.rabbitmq.com/tutorials/tutorial-three-java.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章