通过Spring发送和接收RabbitMQ扇出交换

时间:2015-07-22 11:50:44

标签: java rabbitmq spring-rabbit

我正在使用RabbitMQ,我很困惑使用convertSendAndReceive类的扇出交换和sendAndReceive(或RabbitTemplate)方法。

例如,我有2个消费者用于持久队列QUEUE-01和QUEUE-02,它们被绑定到持久的扇出交换FANOUT-01。和FANOUT-01的1家出版商。我理解使用convertAndSend(或send)方法发布消息时会发生什么,消息将被复制到每个队列并由每个消费者处理。但是我不确定如果我打电话给sendAndReceive方法将会发生什么?我会从哪个消费者那里得到答复?有什么特定的行为吗?我找不到任何关于此的文件。

2 个答案:

答案 0 :(得分:1)

sendAndReceive中的方法RabbitTemplate用于您希望使用RPC样式消息传递的时间。有一个很好的教程here

答案 1 :(得分:1)

sendAndReceive()不适合fanout消息传递;关于哪个回复将获胜(第一个,一般而言)是不确定的。如果您想处理多个回复并聚合它们,则需要使用离散的sendreceive调用(或回复的侦听器容器)并自行进行聚合。

考虑在这种情况下使用Spring Integration。它具有用于聚合消息的内置组件。