Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要spring rabbitmq向所有客户发送消息-禁用一个队列的循环_Spring_Tomcat_Rabbitmq - Fatal编程技术网

需要spring rabbitmq向所有客户发送消息-禁用一个队列的循环

需要spring rabbitmq向所有客户发送消息-禁用一个队列的循环,spring,tomcat,rabbitmq,Spring,Tomcat,Rabbitmq,我有几个队列,需要对其中一个队列执行以下操作: 生产者应向该队列发送消息,但所有使用者均应接收该消息。因此,如果这个队列中有5个spring侦听器,那么每个侦听器都应该接收消息,而不是生产者。我这样做是因为我有一个tomcat集群和rabbitmq异步消息,如果我从工作者那里得到响应,我不知道如何将它分派到正确的tomcat节点。因此,我决定将所有worker回复广播到所有tomcat节点。每个tomcat集群节点侦听相同的输出队列。然后,如果它是一个正确的tomcat实例,它将被处理,所有其他

我有几个队列,需要对其中一个队列执行以下操作:
生产者应向该队列发送消息,但所有使用者均应接收该消息。因此,如果这个队列中有5个spring侦听器,那么每个侦听器都应该接收消息,而不是生产者。我这样做是因为我有一个tomcat集群和rabbitmq异步消息,如果我从工作者那里得到响应,我不知道如何将它分派到正确的tomcat节点。因此,我决定将所有worker回复广播到所有tomcat节点。每个tomcat集群节点侦听相同的输出队列。然后,如果它是一个正确的tomcat实例,它将被处理,所有其他副本都将丢失,这样就可以了。如何实施?如何让tomcat端的消费者在同一时间收到相同的消息?

好的,在这里找到了解决方案: 在rabbitmq中不可能做到这一点,需要为每个使用者创建两个队列。

这是一个XY问题。您应该使用
直接
交换,并让每个节点使用不同的路由密钥进行订阅。然后,在发送消息时,只需将
reply to
标题设置为,并使用该标题确定响应的路由键。使用
fanout
交换和删除消息是你的建议——这是浪费。消息被发送到交换机。从队列接收消息。队列订阅交换(交换也订阅交换)。