应用场景:把一条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