作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
业务情况是,我们希望应用程序每隔一段时间就应用程序中发生的某个事件通知第三方,并向他们发送一些数据。我们可以说我们是发布者,第三方是订阅者。
如果他们有一个 SOAP 服务期望 SOAP 消息作为通知,那么与其服务通信的最佳实践方式是什么?我希望它是异步的,因为我不希望我们的应用程序放慢速度来通知他们。我还需要它来保证交付,如果他们的服务中断则重试。
通过阅读,我似乎可以使用 activeMQ - 但这是否需要他们有一个可以连接到 MQ 的 JMS 目标?
我理想中想要的是某种透明的消息代理,它将代表我发送 SOAP 请求,并重试直到获得成功的响应。是否存在类似的东西,对于这种情况这是一个明智的架构选择吗?
非常感谢!
最佳答案
SOAP 是一种请求/响应协议(protocol)。虽然底层传输可以是异步的,但这通常对看似同步的客户端是隐藏的。
处理此类通知的最佳方式纯粹是通过 JMS/MQ。但是,这确实假设您可以控制或希望更改客户端,以便它可以使用队列中的消息。
如果情况并非如此,那么队列仍然是可行的方法。
通知应发布到队列中。进程或线程需要使用来自该队列的通知,并使用适当的重试逻辑进行 SOAP 调用,以便在调用失败时重新对通知进行排队。根据您的要求,这可以像内存中队列一样简单,或者,如果您需要通知在进程重新启动后继续存在,则可以使用 ActiveMQ 等外部队列服务器。
无论哪种方式,模式都是相同的:
关于java - 如何从java异步发送soap消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334148/
我是一名优秀的程序员,十分优秀!