我们目前正在尝试为需要接受大量 SOAP 调用并进行 SOAP 调用的应用程序确定应用程序架构。设计目标之一是我们需要考虑的简单性和稳健性。
在 Grails 空间中,我们都可以将其绑定(bind)到一个大的 Grails 应用程序中,但这在健壮性方面令人头疼,因为 Grails 应用程序的更新将禁用所有传入的 SOAP 请求。
我想知道是否建议拆分 Grails 应用程序并将其与 ActiveMQ/ServiceMix/Mule 等相结合?任何建议或意见表示赞赏!什么样的解决方案会是一个不错的选择?
最佳答案
您可以通过在网络负载均衡器后面运行单片 Grails 应用程序来实现一些稳健性。这将允许您执行无停机滚动升级。
现在,这并没有解决其他问题,例如需要处理可能无法访问的远程 SOAP 服务等......这是一个工具/框架(如 Mule)可以变得有用的时候,因为它将为您提供异常处理、重试等等。
这取决于您的 SOAP 桥的预期行为:它是异步的(即触发并忘记,将消息发送到桥,立即获得 ACK 并让桥尽可能进行远程调度)还是同步的(即. 网桥的调用者被保留,直到接收到远程响应并将其转发回它)。
如果您的网桥基本上是同步的,我会说您可以坚持使用单个 Grails 应用程序并使用负载均衡器。由调用者来处理重试。
否则,如果它是异步的,请考虑使用消息传递中间件来帮助临时消息持久性和在发生故障时重新传递。
关于grails - 使用 ESB/MessageBroker 或 Grails 处理 SOAP 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536568/