Интеграция Spring - адаптеры входящего и исходящего каналов

В чем принципиальное различие между адаптерами входящего и исходящего каналов?

Любые примеры были бы очень полезны.

Я просмотрел документы Spring, и это «направленное» различие мне не ясно. Я поддерживаю приложение, в котором настроен адаптер исходящего канала, но мне кажется, что счетчик поведения интуитивно понятен с меткой исходящий. Этот адаптер получает внешний файл, затем передает его в приложение, где мы анализируем файл и сохраняем данные.

Это похоже на этот вопрос, но я хотел бы сосредоточиться в более общем плане об адаптерах каналов и, надеюсь, получите больше отзывов!

Спасибо!


person The Gilbert Arenas Dagger    schedule 01.05.2015    source источник
comment
Исходя из того, что вы сказали, кажется, что ваше приложение использует исходящий шлюз, который отличается от адаптера канала. Шлюз получает сообщение, выполняет исходящую операцию (которая также может извлекать файл) и возвращает сообщение. Адаптер канала только однонаправленный (нет ответа).   -  person daniel.eichten    schedule 01.05.2015
comment
Он использует адаптер канала. Что я сказал о шлюзе? Я могу исправить свою формулировку ... Вы можете увидеть конфигурацию в этом родственном вопросе stackoverflow.com/q/29994253/2860319   -  person The Gilbert Arenas Dagger    schedule 01.05.2015


Ответы (2)


Адаптеры каналов предназначены для односторонней интеграции (шлюзы двунаправленные).

Конкретно, входящие адаптеры находятся в начале потока, а исходящие адаптеры завершают поток. Потоки обычно визуализируются (и концептуально считаются текущими слева направо) ...

inbound-c-a->someComponent->someOtherComponent->outbound-ca

(где -> представляет канал).

Есть два типа адаптеров входящего канала:

  • MessageProducers
  • MessageSources

MessageProducer называются "управляемыми сообщениями", т.е. они в одностороннем порядке создают сообщения полностью асинхронным образом, как только они запускаются; примерами являются адаптер, управляемый сообщениями JMS, адаптер входящего канала TCP, адаптер незанятого (почтового) канала IMAP и т. д.

MessageSources, с другой стороны, опрашиваются - poller с некоторым триггером заставляет платформу запрашивать сообщение у источника; триггер может иметь фиксированную скорость, выражение cron и т. д. Примерами являются (S) FTP-адаптеры, адаптер для входящей почты (POP3. IMAP).

Примерами адаптеров исходящей почты являются адаптер исходящей почты (SMTP).

Шлюзы двусторонние (запрос / ответ).

Входящие шлюзы - это то, где некоторая внешняя система отправляет запрос и ответы Spring Integration.

Исходящие шлюзы - это то, где Spring Integration отправляет запрос и некоторые ответы внешней системы.

Надеюсь, это проясняет ситуацию.

person Gary Russell    schedule 01.05.2015
comment
если это так, то почему для amqp есть входящий и исходящий шлюз? Я изо всех сил пытаюсь подключить pojo в качестве шлюза к очередям запросов / ответов amqp - person Korgen; 15.05.2018
comment
Да; Я предлагаю вам задать новый вопрос, показывающий ваш код. - person Gary Russell; 15.05.2018
comment
@GaryRussell: Шлюзы двусторонние, ты сказал. Будет ли сервер в простой эхо-службе считаться двусторонним? Другими словами, в моем простом примере эхо stackoverflow.com/q/55154418/1185845 вы бы рекомендовали использовать шлюз на обоих клиент и на стороне сервера? Адаптеры не нужны? - person Espinosa; 14.03.2019
comment
Да; любой запрос / ответ является шлюзом; вы могли бы использовать адаптеры для запуска и забыть или получить и не отправить ответ, или у вас могут быть совместные адаптеры для запроса / ответа, как описано в документации. Я ответил на ваш вопрос образцом кода. - person Gary Russell; 14.03.2019

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

person Andrew    schedule 15.05.2015