我正在使用RabbitMQ,我很困惑使用convertSendAndReceive
类的扇出交换和sendAndReceive
(或RabbitTemplate
)方法。
例如,我有2个消费者用于持久队列QUEUE-01和QUEUE-02,它们被绑定到持久的扇出交换FANOUT-01。和FANOUT-01的1家出版商。我理解使用convertAndSend
(或send
)方法发布消息时会发生什么,消息将被复制到每个队列并由每个消费者处理。但是我不确定如果我打电话给sendAndReceive
方法将会发生什么?我会从哪个消费者那里得到答复?有什么特定的行为吗?我找不到任何关于此的文件。
答案 0 :(得分:1)
sendAndReceive
中的方法RabbitTemplate
用于您希望使用RPC样式消息传递的时间。有一个很好的教程here。
答案 1 :(得分:1)
sendAndReceive()
不适合fanout
消息传递;关于哪个回复将获胜(第一个,一般而言)是不确定的。如果您想处理多个回复并聚合它们,则需要使用离散的send
和receive
调用(或回复的侦听器容器)并自行进行聚合。
考虑在这种情况下使用Spring Integration。它具有用于聚合消息的内置组件。