我正在开发一个基于Spring/CXF/Oracle DB的'面向WS'的应用程序。现在,我坚持对组织消息处理的正确方法(已存储在数据库中)进行一些架构考虑。
简而言之,过程如下所示:
(A) 从客户端获取消息 -> 验证 ->存储 -> 发送存储库
(B) 处理 ->更新数据
对于流程的 B 部分,我考虑了两种一般方法:
1) 使用 JMS 队列
在验证并将传入消息详细信息存储在数据库中后,将消息发布到 JSM 队列。另一方面,定义将检索消息并进行处理的 cosumer
2) 获取要处理的数据
使用 db 手动获取数据并进行处理。
其他事实:
- 处理不会是计算密集型的,所以对于新手,我认为不需要工作分配(全部在单个 JVM 中)。
- 单个数据库架构中的所有数据
那么,我很感兴趣在这种情况下选择JMS的关键因素是什么?
JMS将是一个更好的方法。在积极的情况下,方法#2也有效。但是JMS会为你提供一些内置的功能,特别是对于失败的情况。尽管在内部JMS将使用基于数据库的持久存储;它将提供更好的接口来传达这些数据。
例如,您可以配置错误队列来跟踪处理失败的所有消息。
它还将为您提供可扩展的架构,其他一些应用程序(将来)可以开始消费您的消息和流程。
可靠:由于异步消息传递,应用程序不需要所有部分才能作为一个整体运行。
灵活 :考虑一下您可能希望在所有其他数据之前处理某些类型的数据(优先级)的场景。JMS将提供比在程序中调整逻辑更好的方法。