我正在使用RabbitMQ,并且对使用扇出交换和convertSendAndReceive
类的sendAndReceive
(或RabbitTemplate
)方法感到困惑。
例如,对于持久队列QUEUE-01和QUEUE-02,我有2个使用者,它们绑定到持久扇出交换机FANOUT-01。还有1个发布商为FANOUT-01。我了解使用convertAndSend
(或send
)方法发布消息,消息将被复制到每个队列并将由每个使用者处理时会发生什么。但是我不确定如果调用sendAndReceive
方法会怎样?我会从哪个消费者那里得到答复?有什么特别的行为吗?我找不到与此有关的任何文档。
最佳答案
sendAndReceive()
不适用于fanout
消息传递;哪个回复会获胜还不确定(通常是第一个)。如果要处理多个答复并汇总它们,则需要使用离散的send
和receive
调用(或答复的侦听器容器),然后自己进行汇总。
考虑在这种情况下使用Spring Integration。它具有用于聚集消息的内置组件。