У меня есть проект, настроенный таким образом:
spring:
cloud:
stream:
rabbit:
bindings:
myChannel:
consumer:
prefetch: 3
maxPriority: 10
exchangeType: headers
bindings:
myChannel:
destination: MyChannel
group: my-channel-readers
consumer:
concurrency: 4
max-attempts: 3
binders:
rabbit:
type: rabbit
это действительно создает правильный обмен (как заголовки) и очередь, но не связывает их.
Прежде чем я добавил exchangeType: headers
, он создал обмен как topic
, а также правильно привязал очередь.
Кроме того, если я переключу его на exchangeType: topic
, он правильно создаст привязку.
Я хочу, чтобы это было связано, и отправлять элементы, только если они имеют/не имеют определенного заголовка - как я могу это сделать?
Автоматическая привязка к обмену headers
в настоящее время не поддерживается; см. документация.
exchangeType
The exchange type:
direct
,fanout
ortopic
for non-partitioned destinations and direct or topic for partitioned destinations.Default: topic.
Конечно, вы можете привязать его вручную.
Должна быть возможность автоматической привязки к этому типу обмена. Не стесняйтесь открывать новую проблему функции на GitHub.
Обмен заголовками являются поддерживается в основной структуре spring-amqp; но для spring-cloud-stream нам нужна дополнительная поддержка для установки аргументов привязки для настройки привязки обмена заголовками, и в настоящее время для этого нет поддержки. Отсюда мое предложение запросить новую функцию.
хорошо, спасибо, я создал этот тикет: github.com/spring-cloud/spring-cloud-stream-binder-rabbit/…
@GaryRussell, я вижу, что функция была зафиксирована 2 июля: github.com/spring-cloud/spring-cloud-stream-binder-rabbit/…. Поэтому я считаю, что это должно быть представлено в последнем выпуске SCStR.
Это фича 3.0. 3.0 скоро выйдет, второй релиз-кандидат (3.0.0.RC2) доступен весной веховое репо. repo.spring.io/веха
Я на самом деле видел это в документе, но это показалось очень странным, так как в
org.springframework.amqp.core.ExchangeTypes
это вариант