2

У меня есть приложение spring-cloud-stream с привязкой к кафке. Я хотел бы отправить и получить сообщение из той же темы из одного и того же исполняемого файла (jar). У меня есть определения моего канала, такие как: public interface ChannelDefinition { @Input("forum") public SubscriableChannel readMessage(); @Output("forum") public MessageChannel postMessage(); }как отправить и получить от той же темы в пределах весеннего облачного потока и kafka

Я использую @StreamListener для получения сообщений. Я получаю всевозможные неожиданные ошибки. Иногда я получаю

  1. Нет диспетчеру не найдено для unknown.message.channel для любого другого сообщения
  2. Если я прикрепить командную строку Кафка абонента к вышеуказанной теме форума, он recieves все другое сообщение.
  3. Мое приложение получает каждое другое сообщение, которое является эксклюзивным набором сообщений от абонента из командной строки. Я убедился, что мое приложение подписывается под определенным именем группы.

Есть ли рабочий пример вышеуказанного usecase?

ответ

4

Это неправильный способ определения связываемых каналов (из-за использования имени forum для обоих). Мы должны быть более основательными и быстро работать на нем, но вы привязываете вход и выход к одному каналу и создаете конкурирующего пользователя в своем приложении. Это также объясняет вашу другую проблему альтернативными сообщениями.

Что вы должны сделать, это:

public interface ChannelDefinition { 

    @Input 
    public MessageChannel readMessage(); 

    @Output 
    public MessageChannel postMessage(); 
} 

И затем использовать свойство приложения, чтобы связать свои каналы в ту же очередь:

spring.cloud.stream.bindings.readMessage.destination=forum 
spring.cloud.stream.bindings.postMessage.destination=forum 

 Смежные вопросы

  • Нет связанных вопросов^_^