Я использую Spring-Cloud-Stream для связи между микросервисами. У меня есть следующие предустановленные настройки в брокере Rabbit MQ.
"first" -> exchange of type Topic which is bound to Queue (name="user.create",x-dead-letter-exchange="first.dlx")
"first.dlx" -> dead letter exchange of type Topic
и следующий файл конфигурации:
spring:
cloud:
stream:
bindings:
consumer-input:
group: user.create
destination: first
contentType: application/json
binder: rabbit
binders:
rabbit:
type: rabbit
rabbit:
bindings:
consumer-input:
consumer:
acknowledgeMode: manual
declareExchange: false
queueNameGroupOnly: true
bindQueue: false
deadLetterExchange: first.dlx
autoBindDlq: true
deadLetterRoutingKey: user.create.dlq
и при запуске приложение говорит:
[AMQP Connection 127.0.0.1:5672] ERROR o.s.a.r.c.CachingConnectionFactory - Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'first.dlx' in vhost '/': received 'direct' but current is 'topic', class-id=40, method-id=10)
потому что кролик mq пытается объявить dlx типа "direct". Вот ссылка на репо .
поэтому мой вопрос ... есть ли способ сказать кролику mq объявить dlx другого типа, кроме "direct", например, имя свойства: "deadLetterExchangeType: topic"? или вообще не объявлять dlx.
Любое другое предложение будет очень полезным.