應用場景:把一條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