当前位置: 首页 > 知识库问答 >
问题:

通过spring在RabbitMQ扇出交换上发送和接收

公孙锋
2023-03-14

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

例如,我有两个持久队列的使用者QUEUE-01和QUEUE-02,它们绑定到持久扇出交换fanout-01。并将1个发布服务器发送到FANOUT-01。我理解当消息使用convertandsend(或send)方法发布时会发生什么,消息将被复制到每个队列并由每个使用者处理。但我不确定如果我将调用sendandreceive方法会发生什么?我会从哪位消费者那里得到回复?有什么特别的行为吗?我找不到这方面的任何文件。

共有1个答案

姬昊焱
2023-03-14

sendandreceive()不适用于扇出消息;至于哪一个答复会赢(一般是第一个)还不确定。如果要处理多个回复并聚合它们,则需要使用离散的sendreceive调用(或回复的侦听器容器)并自己进行聚合。

考虑对此类情况使用spring集成。它有用于聚合消息的内置组件。

 类似资料:
  • 问题内容: 我有下面的代码使用来将消息发布到队列中。该是越来越创建,但该消息无法被看到的队列。我也没有看到任何错误。 BasicApplication.java Producer.java 问题答案: 您使用了错误的方法;该方法的第一个参数是。 使用。

  • 我一直在尝试使用RabbitMQ,但遇到了以下问题(与此非常类似:RabbitMQ中的主题交换与直接交换)。 我需要密集地广播大约800种类型的消息(因此每种消息类型都会有很多消费者),我想知道以下哪种方法更好: > 创建一个直接交换,在该交换中,消息将使用路由密钥(消息类型名称)发送,每个消费者都将通过绑定了相应路由密钥的临时队列连接到该交换。(因为没有像“key1.key2.*”这样复杂的路由

  • 我能够使用Publish/SubscribeRabbitMQ Java教程创建扇出交换,任何连接的使用者都将收到一个消息的副本。我想在连接任何使用者之前创建交换和绑定,而不是动态/编程地声明交换和绑定。我已经通过RabbitMQ管理控制台完成了这一点。然而,由于某种原因,我的消费者以循环方式接收消息,而不是全部接收消息的副本。我错过了什么?下面是一些代码片段: 发布者: 消费者: ...在Rabb

  • 我们有一个队列和交换集群来支持消息。 null 我们每个队列都有一个交换,以便在重试超时期间后将重试的消息发送回特定的队列。 在这个场景中,我们有3个交换(“foo-exchange”、“foo-exchange-dead”、“baz-exchange-retry(每个队列1个fanout exchange)”和3个队列(“baz-queue”、“baz-queue-delay”、“baz-que

  • 在我的应用程序中,我使用spring cloud stream集成Rabbit MQ。默认情况下,spring cloud streams将目标创建为Rabbit MQ中的交换类型主题。如何配置spring cloud stream以创建fanout类型的交换?

  • 根据我的理解,直接和扇出交换的所有功能或用例都可以使用主题交换来实现。主题交换支持功能超集。那么问题来了,为什么 RabbitMQ 有直接和扇出式交换?是否有任何用例可以使用直接/扇出交换来实现,但不能使用主题交换来实现?