Spring Cloud Stream - свойство routingKeyExpression не работает - PullRequest
0 голосов
/ 10 июня 2019

Я использую весенний облачный поток с RabbitMQ. (Весна облачной версии Гринвич) У меня есть одна тема с двумя очередями, и я хочу отправлять сообщения в каждую очередь, используя ключ маршрутизации.

Но это не работает должным образом.

Когда я отправляю сообщения через каждый канал @Output, сообщения отправляются в обе очереди. (Я хочу 1 сообщение для 1 очереди, но 1 сообщение отправляется в 2 очереди)

Конфигурация моего производителя приведена ниже (фактический код указан в yaml)

Spring.cloud.stream.bindings.output1.destination=topic-a
Spring.cloud.stream.bindings.output1.producer.requiredGroups=queue1
Spring.cloud.stream.bindings.output1.producer.bindingRoutingKey=queue1
Spring.cloud.stream.bindings.output1.producer.routingKeyExpression=queue1

Spring.cloud.stream.bindings.output2.destination=topic-a
Spring.cloud.stream.bindings.output2.producer.requiredGroups=queue2
Spring.cloud.stream.bindings.output2.producer.bindingRoutingKey=queue2
Spring.cloud.stream.bindings.output2.producer.routingKeyExpression=queue2

А мой потребительский конфиг ниже

spring.cloud.stream.bindings.input1.destination=topic-a
spring.cloud.stream.bindings.input1.group=queue1
spring.cloud.stream.bindings.input1.consumer.durableSubscription=true
spring.cloud.stream.bindings.input1.consumer.bindingRoutingKey=queue1

spring.cloud.stream.bindings.input2.destination=topic-a
spring.cloud.stream.bindings.input2.group=queue2
spring.cloud.stream.bindings.input2.consumer.durableSubscription=true
spring.cloud.stream.bindings.input2.consumer.bindingRoutingKey=queue2

Я также пытался без requiredGorups и bindingRoutingKey, оставляя только routingKeyExpression в конфигурации производителя.

Я передал значение routingKeyExpression в yaml для '' 'queue1' '' или '"queue1'".

Если я отправлю «первое» сообщение с output1 и «второе» сообщение с output2,

«Первое» и «Второе» сообщения находятся в topic-a.queue1. ( ключ маршрутизации отображается как 'topic-a' ), тогда как те же два сообщения находятся и в topic-a.queue2.

Всего сгенерировано 4 сообщения.

Что я не прав?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 июня 2019

Вам не хватает элемента .rabbit для свойств связующего, специфичных для rabbitmq.

См. документацию .

Следующие свойства доступны для Rabbitтолько для производителей и должны иметь префикс spring.cloud.stream.rabbit.bindings.<channelName>.producer..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...