0

我使用 DSL 在 Spring Integration 中实现了 2 个流程:

  • REST -> AMQP -> 消费者 -> 服务
  • AMQP -> 消费者 -> 服务

第一个流程只是一个 HTTP 消息发布器,用于无法直接发布到 AMQP 的客户端。消息处理在Service中失败时,如何让发布者知道?

我正在使用DirectChannel查看Publisher ConfirmsService Acks模式,以便Publisher可以同步接收错误消息,如果我理解正确的话。但是,这将阻止发布者,直到服务返回(或抛出异常)。Spring Integration 中有哪些选项(因为它是基于 EIP 的)来处理应该通知发布者消息处理失败而不被阻止的情况?这也是一个设计问题。

4

1 回答 1

1

REST -> AMQPoutboundGateway -> AmqpInboundGateway -> Service

通过使用网关,出站网关将阻止等待来自服务的“成功”回复。

向入站网关添加错误通道;如果服务失败,将调用错误流,您可以配置该流以将失败返回给调用网关。

如果您不想阻塞,可以使用异步出站网关,但是您需要一些其他机制来将结果返回给调用者。

于 2020-07-14T14:15:25.137 回答