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

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

最佳答案

sendAndReceive()不适用于fanout消息传递;哪个回复会获胜还不确定(通常是第一个)。如果要处理多个答复并汇总它们,则需要使用离散的sendreceive调用(或答复的侦听器容器),然后自己进行汇总。

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

09-19 09:31