我不会将某些数据发送到具有专有通信协议的外部软件。
那是抽象的工作流程。
发送应用程序事件
处理ACK
那么,哪个端点或通道是用于此目的的合适对象?
答案 0 :(得分:0)
当您尝试向外部服务发送消息时,重试是出站通道适配器的一部分。请参阅RequestHandlerRetryAdvice
以及如何在Reference Manual中进行配置。
对于等待确认的任务,我建议使用一个聚合器,其中包含MessageCountReleaseStrategy(2)
和一些CorrelationStrategy
,可以对请求进行分组并对其进行确认。因此,这样,在ack到达之前,您将不会离开聚合器。
此聚合器应作为PublishSubscribeChannel
的第二个订阅者,第一个订阅者将是您的出站通道适配器,用于将请求发送到外部系统。
现在把戏。
要阻止发件人直到ack到达,您需要将呼叫包装到@MessagingGateway
,并且答案(答复)应来自该聚合器。
我建议也将网关的replyChannel
设置为PublishSubscribeChannel
。这样,第二个订阅者将成为您的服务激活者,以处理聚合器中已发布组的确认。同时,第一个订阅者是每个人等待回复的网关。
在回复上一封邮件之前,呼叫过程将无法发送下一封邮件。
我知道这很复杂,但是由于您的要求太高,您需要阻止发送。