消息处理 - 我应该使用 JMS 吗?



我正在开发一个基于Spring/CXF/Oracle DB的'面向WS'的应用程序。现在,我坚持对组织消息处理的正确方法(已存储在数据库中)进行一些架构考虑。

简而言之,过程如下所示:

(A) 从客户端获取消息 -> 验证 ->存储 -> 发送存储库

(B) 处理 ->更新数据

对于流程的 B 部分,我考虑了两种一般方法:

1) 使用 JMS 队列

在验证并将传入消息详细信息存储在数据库中后,将消息发布到 JSM 队列。另一方面,定义将检索消息并进行处理的 cosumer

2) 获取要处理的数据

使用 db 手动获取数据并进行处理。

其他事实:

  • 处理不会是计算密集型的,所以对于新手,我认为不需要工作分配(全部在单个 JVM 中)。
  • 单个数据库架构中的所有数据

那么,我很感兴趣在这种情况下选择JMS的关键因素是什么?

JMS将是一个更好的方法。在积极的情况下,方法#2也有效。但是JMS会为你提供一些内置的功能,特别是对于失败的情况。尽管在内部JMS将使用基于数据库的持久存储;它将提供更好的接口来传达这些数据。

例如,您可以配置错误队列来跟踪处理失败的所有消息。

它还将为您提供可扩展的架构,其他一些应用程序(将来)可以开始消费您的消息和流程。

可靠:由于异步消息传递,应用程序不需要所有部分才能作为一个整体运行。

灵活 :考虑一下您可能希望在所有其他数据之前处理某些类型的数据(优先级)的场景。JMS将提供比在程序中调整逻辑更好的方法。

最新更新