首页 > 解决方案 > 如何使用 Spring Cloud Dataflow 实现 RabbitMQ DLQ

问题描述

我尝试将我的流应用程序(处理器)配置为自动将 dlq 与当前参数绑定:

spring.cloud.stream.rabbit.default.consumer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.input.consumer.declareDlx=true

但是当我通过数据流部署它时,我的应用程序中出现了当前错误:

Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 's2.kotlin-transform.s2' in vhost '/': received none but current is the value 'DLX' of type 'longstr', class-id=50, method-id=10)

或者

Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 's2.http.s2' in vhost '/': received none but current is the value 'DLX' of type 'longstr', class-id=50, method-id=10)

我见过不同的人有同样的问题,但以另一种方式:received 'DLX' of type 'longstr' but current is none只是因为他们试图用不同的参数重新创建队列x-dead-letter-exchange

在这里,我无法更改 none,因为它是通过数据流和数据流在 2 秒前创建队列的......

我试图通过以下方式强制使用 DLX 名称:spring.cloud.stream.rabbit.bindings.input.consumer.deadLetterExchange=MYDLX

但得到了同样的错误: Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 's2.http.s2' in vhost '/': received none but current is the value 'MYDLX' of type 'longstr', class-id=50, method-id=10)

有人可以帮助我吗?它可能是兔子活页夹中的错误?

标签: rabbitmqspring-rabbitspring-cloud-dataflowrabbitmq-exchange

解决方案


推荐阅读