【发布时间】:2019-02-04 10:28:24
【问题描述】:
我有一个 docker 环境,其中消息服务(rabbitmq)和我的服务(myapp)在 docker 中配置。我尝试使用 myapp 发布的消息。 myapp 在给定的消息通道和消费者代码中生成“扇出”类型的消息,我尝试设置 rabbitmq 复杂性,以便可以使用“扇出”类型的消息。
consumer sample:
factry = newConnectionFactory();
factry.setHost(MYHOST);
connection.newConnection();
chnl = connection.createChannel();
channel.exchangeDeclare("MYEXCHG","fanout",true);
.....
and so on.
当消费者如上图设置rabbitmq事物时: 我收到以下 PRECONDITION 错误: 原因:
com.rabbitmq.client.ShutdownSignalException:通道错误;协议 方法:#method(回复代码=406, reply-text=PRECONDITION_FAILED - 不等价的 arg 'type' 用于交换 虚拟主机“/”中的“应用程序状态”:收到“扇出”但当前是 '主题', class-id=40, method-id=10)
我已经对生产者代码和消费者代码进行了足够的分析。我仍然无法缩小问题的范围。我的问题是:我能否以能够接受生产者发送的任何类型消息的方式配置通道。
假设生产者 P1 产生类型为直接的消息,而 P2 产生类型为扇出的消息。我可以有一个通用的消费者代码,以便它能够接收从 P1 和 P2 生成的消息...
【问题讨论】:
-
如果出现前置条件错误,请务必检查队列和交换的参数,因为我试图修复队列上
typearg 的值但它实际上是一个参数的交流。Queue&ExchangeQueueBindingQueueBindingExchangeQueueExchangeExchangeQueueExchange的参数在spring boot的监听器注解中的注解参数帮我弄明白了
标签: rabbitmq