Пересылка сообщения в канал сообщений вручную - Spring Integration

Я могу успешно отправить сообщение, используя приведенное ниже из моего FirstHandler

messageChannel.send(MessageBuilder.withPayload(pa).build());

Но поток ожидает завершения обработчика2, связанного с messageChannel.

Я хотел бы просто переслать данные на канал и забыл, я попытался опубликовать-подписаться и направить канал, оба ждут завершения обработчика2

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 06.05.2022 21:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, узнайте, какие существуют типы реализации MessageChannel: https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-implementations

Это правильно, что DirectChannel просто вызывает MessageHandler в том же потоке отправки. По умолчанию PublishSubscribeChannel ведет себя так же.

Если вы хотите отправить-забыть, вам нужен MessageChannel, который переносит потребляющую задачу в другой поток. Для этого есть QueueChannel, ExecutorChannel и FluxMessageChannel.

Спасибо! Это сработало, реализовано с помощью ExecutorChannel.

JaNa V 09.05.2022 19:51

Другие вопросы по теме