我在Spring Integration中使用DSL:实现了两个流
- REST->AMQP->消费者->服务
- AMQP->消费者->服务
第一个流只是一个HTTP消息Publisher,用于无法直接发布到AMQP的客户端。如何让发布服务器知道服务中的消息处理何时失败?
我正在查看DirectChannel的Publisher Confirms和Service Acks模式,以便Publisher可以同步接收错误消息,如果我正确理解的话。然而这将阻止发布服务器,直到服务返回(或抛出异常(。Spring Integration中有哪些选项(因为它是基于EIP的(来处理Publisher应该被通知消息处理失败而不被阻止的情况?这也是一个设计问题。
REST -> AMQPoutboundGateway -> AmqpInboundGateway -> Service
通过使用网关,出站网关将阻止等待来自服务的"成功"答复。
向入站网关添加一个错误通道;如果服务失败,错误流将被调用,您可以配置该流将失败返回到调用网关。
如果不想阻塞,可以使用异步出站网关,但随后需要其他机制将结果返回给调用者。