динамически связывать направления для производителей и потребителей (весна) - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь отправлять и получать сообщения по каналам / темам, чьи имена назначения находятся в базе данных, поэтому их можно добавлять / изменять / удалять во время выполнения, но я удивлен, что нашел немного в сети.Я использую Spring Cloud Streams, чтобы изменить базового брокера.Чтобы отправлять сообщения в динамически связанные пункты назначения, я использую BinderAwareChannelResolver.resolveDestination(target).send(message), но я не нашел что-то, что работает, как это, для получения сообщений.Мои вопросы:1. Есть ли что-то подобное?2. как можно периодически обрабатывать сообщение как @StreamListener?3. И не так важно, но можете ли вы автоматически создать подписчика, если его нет?Спасибо за любую помощь!

1 Ответ

1 голос
/ 18 марта 2019

Это немного выходит за рамки оригинального дизайна каркаса.Но я бы еще больше усомнился в вашей архитектуре.,,Если вы действительно хотите подписаться на неограниченное количество направлений, мне интересно, почему?Каковы основные бизнес-требования?

Имейте в виду, что даже если бы мы сделали это каким-либо образом, это потребовало бы динамического создания контейнера слушателя сообщений для каждого нового пункта назначения, что вызвало бы больше вопросов, таких как, как долго этот контейнер должен жить с тех порв конце концов у вас закончатся ресурсы.

Если, однако, вы просто спрашиваете о возможности сопоставления нескольких адресатов одному каналу, чтобы все сообщения отправлялись в один и тот же обработчик сообщений (например, StreamListener), тогда вы можете простоиспользуйте свойство input destination и определите несколько пунктов назначения, разделенных запятыми.

...