Rabbitmq Spring云数据流DLQ、生产者和消费者驻留在多个应用程序下

Rabbitmq Spring云数据流DLQ、生产者和消费者驻留在多个应用程序下,rabbitmq,spring-cloud-stream,Rabbitmq,Spring Cloud Stream,我在应用程序A中有一个具有以下配置的生产者 生产者财产: 在另一个应用程序中,我有一个相同队列的消费者,比如B #Consumer Properties: spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.destination=fabric-exchange spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.group=packag

我在应用程序A中有一个具有以下配置的生产者

生产者财产: 在另一个应用程序中,我有一个相同队列的消费者,比如B

#Consumer Properties:
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.destination=fabric-exchange
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.group=package-version-updates
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.consumer.max-attempts=1
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.exchangeType=direct
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.durableSubscription=true
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.bindingRoutingKey=package-version
#DLQ
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.autoBindDlq=true
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.dlqDeadLetterExchange=
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.dlq-ttl=30000
#Error Exchange Creation and Bind the Same to Error Queue
spring.cloud.stream.bindings.packageVersionUpdatesErrorPublishChannel.destination=fabric-error-exchange
spring.cloud.stream.bindings.packageVersionUpdatesErrorPublishChannel.producer.requiredGroups=package-version-updates-error
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.exchangeType=direct
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.routingKeyExpression='packageversionupdateserror'
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.bindingRoutingKey=packageversionupdateserror
现在假设,例如,如果应用程序A首先启动,那么将创建队列版本更新,而不会创建任何与其关联的死信队列

现在,当应用程序B启动时,这是我得到的异常,通道被关闭,我认为这是因为应用程序B试图用不同的配置重新创建队列

vhost“/”中队列“结构交换.版本更新”的参数“x-dead-letter-exchange”不等效:收到类型为“longstr”的值“DLX”,但当前值为“none”

谁能告诉我,我该如何解决这个问题,我的要求是在应用程序a中创建一个队列,而应用程序a将简单地将消息生成到这个队列中


App-B也会消耗同样的资源,我的要求是通过DLQ支持在X个时间段后重新尝试所需的组

只是为了方便生产者启动时提供消费者队列,避免生产者先启动时丢失消息


您必须在两侧使用相同的exchange/queue/binding配置。

谢谢@gary的回复,我会再试一次,我尝试在两侧创建相同的属性,但是,如果生产者端通过application.properties和接口声明的消费者频道未被使用,并且如果承载生产者的应用程序首先启动,那么我也会看到类似的错误…但我将重试并确认
#Consumer Properties:
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.destination=fabric-exchange
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.group=package-version-updates
spring.cloud.stream.bindings.packageVersionUpdatesConsumerChannel.consumer.max-attempts=1
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.exchangeType=direct
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.durableSubscription=true
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.bindingRoutingKey=package-version
#DLQ
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.autoBindDlq=true
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.dlqDeadLetterExchange=
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesConsumerChannel.consumer.dlq-ttl=30000
#Error Exchange Creation and Bind the Same to Error Queue
spring.cloud.stream.bindings.packageVersionUpdatesErrorPublishChannel.destination=fabric-error-exchange
spring.cloud.stream.bindings.packageVersionUpdatesErrorPublishChannel.producer.requiredGroups=package-version-updates-error
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.exchangeType=direct
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.routingKeyExpression='packageversionupdateserror'
spring.cloud.stream.rabbit.bindings.packageVersionUpdatesErrorPublishChannel.producer.bindingRoutingKey=packageversionupdateserror