0

业务情况是,我们希望我们的应用程序每隔一段时间就在我们的应用程序中发生某个事件时通知第三方,向他们发送一些数据。我们可以说我们是发布者,第三方是订阅者。

如果他们有一个期望肥皂消息作为通知的肥皂服务,那么与他们的服务进行通信的最佳实践方式是什么?我希望它是异步的,因为我不希望我们的应用程序放慢速度来通知他们。我还需要保证交付,如果他们的服务中断,我会重试。

通过阅读,看起来我可以使用 activeMQ - 但这不会要求他们有一个可以连接到 MQ 的 JMS 目的地吗?

我最喜欢的是某种透明的消息代理,它将代表我发送一个肥皂请求,重试直到它得到成功的响应。是否存在类似的东西,对于这种情况,这是一个明智的架构选择吗?

非常感谢!

4

1 回答 1

1

SOAP 是一种请求/响应协议。虽然底层传输可以是异步的,但这通常对看起来是同步的客户端隐藏。

处理此类通知的最佳方式完全是通过 JMS/MQ。但是,这确实假设您可以控制或希望更改客户端,以便它可以使用队列中的消息。

如果不是这种情况,那么队列仍然是要走的路。

通知应该发布到队列中。进程或线程需要使用来自该队列的通知,并使用适当的重试逻辑进行 SOAP 调用,如果该调用失败,该逻辑会重新排队通知。根据您的要求,这可以像内存队列一样简单,或者,如果您需要通知以在进程重新启动后继续存在,则可以使用 ActiveMQ 等外部队列服务器。

无论哪种方式,模式都是相同的:

  • 你排队你的通知
  • 另一个线程或另一个进程中的消费者使用通知并进行 SOAP 调用
  • 如果 SOAP 调用失败,您将重新排队通知
于 2013-05-02T09:54:10.903 回答