Использование Spring Cloud Stream с Rabbitmq с типом обмена «заголовки»

У меня есть проект, настроенный таким образом:

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, он правильно создаст привязку.

Я хочу, чтобы это было связано, и отправлять элементы, только если они имеют/не имеют определенного заголовка - как я могу это сделать?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 026
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Автоматическая привязка к обмену headers в настоящее время не поддерживается; см. документация.

exchangeType

The exchange type: direct, fanout or topic for non-partitioned destinations and direct or topic for partitioned destinations.

Default: topic.

Конечно, вы можете привязать его вручную.

Должна быть возможность автоматической привязки к этому типу обмена. Не стесняйтесь открывать новую проблему функции на GitHub.

Я на самом деле видел это в документе, но это показалось очень странным, так как в org.springframework.amqp.core.ExchangeTypes это вариант

orirab 24.06.2019 15:59

Обмен заголовками являются поддерживается в основной структуре spring-amqp; но для spring-cloud-stream нам нужна дополнительная поддержка для установки аргументов привязки для настройки привязки обмена заголовками, и в настоящее время для этого нет поддержки. Отсюда мое предложение запросить новую функцию.

Gary Russell 24.06.2019 16:52

хорошо, спасибо, я создал этот тикет: github.com/spring-cloud/spring-cloud-stream-binder-rabbit/…

orirab 24.06.2019 16:53

@GaryRussell, я вижу, что функция была зафиксирована 2 июля: github.com/spring-cloud/spring-cloud-stream-binder-rabbit/…. Поэтому я считаю, что это должно быть представлено в последнем выпуске SCStR.

Denys 19.11.2019 16:40

Это фича 3.0. 3.0 скоро выйдет, второй релиз-кандидат (3.0.0.RC2) доступен весной веховое репо. repo.spring.io/веха

Gary Russell 19.11.2019 17:01

Другие вопросы по теме