#spring-webflux #spring-integration-dsl #message-channel
Вопрос:
Мне нужно отправить слабое сообщение во многих частях потока информации об обработке файлов и продолжить основной поток.
Я не нашел абсолютно простого способа сделать это
Вот мое решение до сих пор:
Объявите канал очереди для получения сообщений, которые необходимо отправить
@Bean
MessageChannel slackChannel() {
return MessageChannels.queue(SLACK_CHANNEL).get();
}
Каждое сообщение в этом канале будет отправлено в Slack (применяя некоторое преобразование перед отправкой)
@Bean
IntegrationFlow startFlow() {
return IntegrationFlows
.from(FILE_CHANNEL)
.filter(myFilter)
.handle(myService, "doSomething")
.transform(doSomeTransformation)
.channel(SLACK_CHANNEL)
.split()
.aggregate(myAggregator)
.transform(anotherTransformer)
.channel(ANOTHER_CHANNEL)
.get();
}
Здесь слабый поток
@Bean
IntegrationFlow sendFileProcessingInfo() {
return IntegrationFlows
.from(SLACK_CHANNEL)
.transform(Message.class, this::prepareSlackMessage)
.handle(WebFlux.outboundGateway(m ->
UriComponentsBuilder.fromUriString(slackConfigurationProperties.getUrl())
.build()
.toUri())
.httpMethod(HttpMethod.POST)
.expectedResponseType(String.class))
.log()
.get();
}
Одна из проблем заключается в том, что поток не продолжается после отправки сообщения в канал SLACK_CHANNEL в середине основного потока.
Другая проблема заключается в том, что sendFileProcessingInfo, по-видимому, никогда не активируется
Кроме того, у меня есть некоторые сомнения в том, что тип ожидаемого ответа должен быть строковым.
Итак, каким должно быть наиболее подходящее решение для отправки HTTP-сообщений в середине потока? и в чем может быть причина этих проблем?
Кроме того, выполнение преобразования для подготовки сообщения slack изменит объект основного потока?
Я буду признателен за любую помощь в этом.
Thanks!