2011-12-01 72 views
0

我有一个设计问题,并希望有建议。动态调度消息设计咨询

我使用的Weblogic 11g中,EJB3.0

我有一个系统,它的目标检索和发送信息,以夫妻资源(数据库)的。

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

因此,这里是一个流程示例:

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

有一种可能性,即消息将包含一个以上的目标数据库(例如键“所有”的意思是我应该发往所有数据库。

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

所以现在这是我的问题:

我应该让(队列为我的资源的数量的数量和专用?每个队列到特定资源)

(在这种情况下,我分析每个消息,只是将其发送到正确的队列中,而一个MDB会听和做插入到正确的数据库)

如果我那样做,我将无法使其动态,含义每次需要在未来中添加/删除新资源我需要打开代码并做出正确的更改。

你想要什么?我怎样才能更好地实施它?

感谢您的帮助 ray。

回答

0

我认为使用每个目标资源(数据库)的队列是好的。而且,只要从配置文件驱动它们,您就不需要更改代码以添加和删除这些端点。您的调度员应该有一个配置,列出每个“目标数据库密钥”的目标队列。读取的进程/组件监视端点队列同样需要配置,如db连接字符串或其他。

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

+0

所以你基本上说,一个配置文件将列出我使用的所有队列?你谈论的XML /文本文件?有时我需要在配置队列属性时设置不同的注释。不确定它可以动态写入。 – rayman

+0

如果你真的不能使用配置,因为配置和写入队列的代码是完全唯一的(你能检测到我的疑问:)),那么我会将该代码推入QueueConfigurator类(或者更确切的说是子类),它可以加载动态地,加载配置器所需的信息应该保存在配置文件中。这样你就可以放弃新的队列支持而不需要重新编译基础。 – tcarvin

+0

我帮你。还有一件事。我明白,我不能完全避免“触摸”代码,因为将来当新的目标数据库密钥将被添加时,我需要实现不同的插入和逻辑到新的数据库要求的代码。您如何建议我有效地设计代码,以便添加新的“队列隧道”会很舒服。以可插拔的方式。谢谢。 – rayman