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

交换类型问题RabbitMQ...消费者期望“粉丝出局”,但生产者实际是“话题”

厉永宁
2023-03-14

我有一个docker环境,其中消息服务(Rabbitmq)和我的服务(myapp)在docker中配置。myapp在给定的消息通道和消费者代码中产生类型为"fanout"的消息,我尝试设置Rabbitmq的复杂性,以便类型为"fanout"的消息可以被消费。

consumer sample:
factry = newConnectionFactory();
factry.setHost(MYHOST);
connection.newConnection();
chnl = connection.createChannel();
channel.exchangeDeclare("MYEXCHG","fanout",true);
.....
and so  on. 

当使用者设置rabbitmq thingy时,如上所示:我得到以下前提条件错误:由以下原因引起:

通用域名格式。兔子。客户关机信号异常:通道错误;协议方法:#方法(回复代码=406,回复文本=Premission_失败-vhost'/'中exchange'applicationStatus'的参数'type'不相等:收到'fanout'但当前为'topic',类id=40,方法id=10)

我已经对生产者代码和消费者代码进行了足够的分析。我仍然无法缩小这个问题的范围。我的问题是:我是否可以配置频道,使其能够接受制作人发送的任何类型的消息。

假设生产者P1产生直接类型的MSG,P2产生扇出类型的MSG。我可以有一个共同的消费者代码,以便它将能够接收从P1和P2产生的MSG。。。

共有2个答案

宫子晋
2023-03-14

是,它不是消息类型,而是交换类型。感谢Luke Bakken的支持。我已经接触到拉比MQ论坛。

https://groups.google.com/forum/#!主题/rabbitmq用户/6IQ4s6pmys0

宣望
2023-03-14

假设生产者P1产生直接类型的MSG,P2产生扇出类型的MSG。我可以有一个共同的消费者代码,以便它将能够接收从P1和P2产生的MSG。。。

消息没有类型为直接扇出,交换则有。您的发布者代码和消费者代码必须声明两个交换,每种类型一个。

然后,您的发布者将发布到每个exchange,具体取决于消息是直接路由到队列还是扇出到多个队列。

最后,您的使用者必须声明队列并将其绑定到每个exchange,然后从每个队列进行消费。

注意:RabbitMQ团队监控RabbitMQ用户邮件列表,有时只回答有关StackOverflow的问题

 类似资料:
  • 所谓的生产者消费者模型就是 某个模块(函数)负责生产数据,这些数据由另一个模块来负责处理 一般生产者消费者模型包含三个部分 生产者、缓冲区、消费者 为什么生产者消费者模型要含三个部分?直接生产和消费不行么? 一个案例说明一切 生产者好比现实生活中的某个人 缓冲区好比现实生活中的邮箱 消费者好比现实生活中的邮递员 如果只有生产者和消费者, 那么相当于只有写信的人和邮递员,那么如果将来过去的邮递员离职

  • 我如何将电话限制在每5秒一次。注意:只能修改reallySlowApi。 编辑:我知道,但是如果Api变得更慢,它就不能解决问题。我需要使用的最佳方式。

  • 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前,使用Ctrl-C关闭zookeeper和kafka服务(这是通过在consumer方法中使用来模拟的)。 发现 在zookeeper和kafka服务被关闭后,消费者继续在控制台上写消息。 问题 我如何使消费者从上次消费的消息的索引+1继续。 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前

  • 我正在处理一个kafka用例,在这个用例中,我需要在生产者和消费者端具有事务性语义...我可以使用kafka transaction API 0.11将事务性消息发布到kafka集群,但在消费者端,我面临着一个问题...我在属性文件中设置了但我不能使用它...我可以看到消息被使用但这不是希望的... 生产者代码 ProducerTX.Properties 消费者 感谢你的帮助..谢谢

  • 生产者线程与消费者线程使用信号量同步 生产者线程与消费者线程使用信号量同步 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-08-24 yangjie the f

  • 我成功地建立了一个话题交换,并且能够同时向几个消费者传递消息。 我还想向竞争对手传递信息,并继续使用主题交换。我了解到,使用相同的队列名称可以让消费者竞争消息。然而,我可能弄错了,因为我无法使它工作。 为同一主题的多个侦听器设置: < li >申报话题交流 < li >对于每个侦听器,用自动生成的名称声明一个新队列 < li >用给定的主题路由关键字将此队列绑定到上面的交换 如何将相互竞争的消费者