Ответ Spring Integration издателю - PullRequest
0 голосов
/ 14 июля 2020

У меня есть 2 потока, реализованные в Spring Integration с использованием DSL:

  • REST -> AMQP -> Consumer -> Service
  • AMQP - > Потребитель -> Сервис

Первый поток - это просто HTTP-сообщение Издатель для клиентов, которые не могут опубликовать sh напрямую в AMQP. Как я могу сообщить Publisher о сбое обработки сообщения в Service ?

Я просматривал Publisher Confirms и Service Acks шаблон с DirectChannel , чтобы Publisher мог синхронно получать сообщение об ошибке, если я правильно понимаю. Однако это заблокирует Publisher до тех пор, пока Service не вернет (или не выдаст исключение). Какие есть варианты в Spring Integration (поскольку она основана на EIP) для обработки такой ситуации, когда Publisher должен быть проинформирован об ошибках обработки сообщений без блокировки? Это тоже вопрос дизайна.

1 Ответ

1 голос
/ 14 июля 2020

REST -> AMQPoutboundGateway -> AmqpInboundGateway -> Service

Используя шлюзы, исходящий шлюз будет блокировать ожидание ответа «об успешном завершении» от службы.

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

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

...