动态调度消息设计咨询

时间:2011-12-01 15:04:20

标签: java design-patterns java-ee architecture jms

我有一个设计问题,希望得到建议。

我正在使用Weblogic 11g,EJB3.0

我有一个系统,它的目标是检索和发送消息到几个资源(数据库)。

每条消息都包含信息和目标数据库密钥。

所以这是一个流程示例:

我从网络服务获得了一条消息和关键目标。我解析消息并通过密钥目标将其发送到正确的数据库。

消息有可能包含多个目标数据库。(例如,键'all'表示我应该调度到所有数据库。

如果其中一个资源中的插入失败,则会发生回滚,我将重新尝试重新执行整个操作。

所以现在这是我的问题:

我应该将队列数作为我的资源数吗? (并将每个队列专用于特定资源)

(在这种情况下,我解析每条消息并将其发送到正确的队列,而MDB将监听并插入到正确的数据库中)

如果我这样做,我就无法做到动态,这意味着每次在未来中需要添加/删除新资源时我会需要打开代码并进行正确的更改。

你认为什么?我怎么能更好地动态实现呢?

感谢您的帮助 射线。

1 个答案:

答案 0 :(得分:0)

我认为为每个目标资源(数据库)使用队列很好。只要从配置文件驱动这些端点,您就不需要更改代码来添加和删除这些端点。您的调度程序应具有一个配置,列出每个“目标数据库密钥”的目标队列。读取监视端点队列的进程/组件同样需要配置,例如db connect string或其他。

现在,添加一个新的资源类型,这需要您修改代码。但这是可以预料的。