Как слушать несколько каналов кафки в весеннем облаке, сгенерированном jhipster - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужна помощь с настройкой.У меня есть 3 отдельных проекта, которые должны общаться через Spring Stream Cloud.Я хочу вещать из моего основного проекта на два других, а также слушать оба их исходящих канала.Jhipster генерирует названия каналов, которые включают название проекта и номер, и я ничего не могу изменить по этому поводу.Я не мог найти место, где эти имена генерируются.Он говорит, что они являются SubscribeableChannels, так что это должны быть исходящие каналы.Однако я не могу найти входящие каналы.Итак, что я не знаю:

Где изменить шаблон для генерации имен каналов в JHipster

Как связать несколько каналов с одним другим каналом?Как и где именно определить входящие и исходящие каналы и связь между ними?Мне не совсем понятно, как это можно решить с помощью Spring Cloud Stream и использовать несколько тем kafka .

Так что, если бы вы могли добавить некоторую информацию относительно моей проблемы, я был бы очень признателен.

application.yml в моем основном проекте

spring:
    cloud:
        stream:
            bindings:
                messageChannel:
                    destination: detection-1.subscribableChannel, demux-1.subscribableChannel # send
                    content-type: application/json
                subscribableChannel:
                    destination: detection-1.messageChannel, demux-1.messageChannel # receive

Остальные идентичны и выглядят так

spring:
    cloud:
        stream:
            bindings:
                messageChannel:
                    destination: WebApp-1.subscribableChannel
                    content-type: application/json
                subscribableChannel:
                    destination: WebApp-1.messageChannel

моя привязка в коде к каналам выглядит такэто:

public interface ProducerChannel {

    String CHANNEL = "messageChannel";

    @Output
    MessageChannel messageChannel();
}


public interface ConsumerChannel {

    String CHANNEL = "subscribableChannel";

    @Input
    SubscribableChannel subscribableChannel();
}

И вот как я это обозначаю в рабочем коде

@Autowired
ProducerChannel producer;

@StreamListener(ConsumerChannel.CHANNEL)
public void consume(Message greeting) {
    String str = greeting.getMessage();
    //do something
    producer.messageChannel().send(MessageBuilder
                    .withPayload(new Message().setMessage("hello world")
                    .build());
    }
}
...