spring cloud stream с несколькими приемниками с динамическими назначениями

#spring #spring-cloud-stream

#spring #spring-cloud-stream

Вопрос:

Мне нужно использовать динамические имена групп для приложения Multisink (multiple sinks) на основе RabbitMQ binder. Похоже, что свойство spring.cloud.stream.bindings ..group не может быть установлено во время выполнения.

Есть мысли о том, как это сделать? SPB: 2.2.8.RELEASE , spring-cloud-dependencies: Hoxton.SR6 , spring-cloud-stream-dependencies: Horsham.SR6

Спасибо,

Ответ №1:

Вы можете использовать там заполнитель свойств…

 spring.cloud.stream.bindings.input-in-0.group=${group.prop:foo}
  

… а затем установите свойство в командной строке:

 -Dgroup.prop=bar
  

Комментарии:

1. Спасибо, Гэри, название группы примерно такое: «сегментирование: альфа-бета @ server — 0». Есть какие-нибудь идеи, как избежать этого значения свойства?

2. В соответствии с разделением readme вы используете псевдонимное имя очереди, а не отдельные сегменты. alpha В этом случае это выглядит так; вы устанавливаете для группы значение alpha , устанавливаете queueNameGroupOnly=true bindQueue=false и declareExchange=false . Если у вас есть сегменты на >1 узле, вам понадобится связующее для каждого. Согласно документам, вы можете использовать только локальные сегменты: How does it work? The plugin will chose the queue from the shard with the least amount of consumers, provided the queue contents are local to the broker you are connected to.