1

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

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

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

(B) 流程 -> 更新数据

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

1)使用JMS队列

在验证并在 DB 中存储传入消息详细信息之后,将消息发布到 JSM 队列。在另一边定义 cosumer 它将检索消息并进行处理

2)获取要处理的数据

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

附加事实:

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

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

4

1 回答 1

0

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

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

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

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

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

于 2013-09-16T08:10:10.973 回答