amqp投递了未创建的exchange后, 再也无法投递正确的exchange #3802
-
情况一:
这种情况应该如何改善呢? 情况二(提供参考):
|
Beta Was this translation helpful? Give feedback.
Replies: 10 comments
-
未创建的 exchange 会在一开始进行初始化,如果初始化阶段已经过了,动态修改 exchange 自然是无法投递成功 |
Beta Was this translation helpful? Give feedback.
-
我没有用 @Producer(exchange="hyperf", routingKey="hyperf") 注释 是参数传递进去的 |
Beta Was this translation helpful? Give feedback.
-
我没有用 @Producer(exchange="hyperf", routingKey="hyperf") 注释 是参数传递进去的 |
Beta Was this translation helpful? Give feedback.
-
一样的。。。 正常投递的时候,是不会动态创建exchange的,你可以自己declare |
Beta Was this translation helpful? Give feedback.
-
不会自动创建未创建的exchange是可以接受的 |
Beta Was this translation helpful? Give feedback.
-
这个不应该啊,贴代码我看看 |
Beta Was this translation helpful? Give feedback.
-
情况
|
Beta Was this translation helpful? Give feedback.
-
确实是个问题,但我查了发送的数据,是一模一样的 这里建议不要投递 不存在的 exchange 了 |
Beta Was this translation helpful? Give feedback.
-
如果执意要投递 exchange 那就使用 confirm 模式
|
Beta Was this translation helpful? Give feedback.
-
这个问题应该 rabbitmq 内部的问题,当投递了不存在的 exchange 后,那个 channel 就有问题了,如果使用了 confirm 模式,会报错然后销毁这个 channel,如果不使用 confirm 模式,后面用这个 channel 投递时,任何消息都无法投递成功。 当然,如果 exchange 存在,你切换 相关 issue |
Beta Was this translation helpful? Give feedback.
这个问题应该 rabbitmq 内部的问题,当投递了不存在的 exchange 后,那个 channel 就有问题了,如果使用了 confirm 模式,会报错然后销毁这个 channel,如果不使用 confirm 模式,后面用这个 channel 投递时,任何消息都无法投递成功。
当然,如果 exchange 存在,你切换
routingKey
是没有任何问题的,即使这个 key 不存在。相关 issue
php-amqplib/php-amqplib#823