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