Интеграция с Spring — передача данных между потоками

У меня есть специальный IntegrationFlow, настроенный как

@Bean
public IntegrationFlow setupRabbitFlow() {
    return IntegrationFlows.from(myInputChannel)     
            .handle((p, h) -> rabbitPublisher.publishToRabbit(p, h))
            .get();
}

и некоторый другой поток, который обрабатывает входящие данные из некоторых файлов XML, например. как показано здесь Опрос из файла с использованием Java DSL — ошибка компиляции при добавлении Files.inboundAdapter. К концу этого потока я хочу передать сообщение вышеупомянутой «раковине», отправляющей кроликов. Как мне это объявить?


person Askar Ibragimov    schedule 20.06.2017    source источник
comment
Просто на скорую руку: имя метода становится именем компонента, если квалификатор не определен. Вероятно, вам не нужен компонент Spring с именем setupRabbitFlow.   -  person M. Prokhorov    schedule 20.06.2017
comment
Я думаю, что ему подходит это логическое имя для компонента IntegrationFlow: github.com/spring-projects/spring-integration-java-dsl/wiki/   -  person Artem Bilan    schedule 20.06.2017


Ответы (1)


Одним из основных элементов Spring Integration является абстракция MessageChannel.

Любое взаимодействие между компонентами Spring Integration (конечными точками) действительно осуществляется через каналы сообщений.

Что вам нужно от вашего второго потока, так это просто указать .channel(myInputChannel) в конце этого потока. И результат обработки XML будет отправлен в ваш первый поток.

person Artem Bilan    schedule 20.06.2017