首先,我会写我认为的过程应该是解决我的问题,在我失去你的注意力。我的问题和现有的设置在下面。这是我认为应该发生的事情,以允许未来的灵活性。请告知:
三重队列MSSQL、甲骨文和RabbitMQ似乎有些过火,但另一方面,它们都执行不同的操作。
现有设置:
我有一个新的消息传递/ESB/中间件/SOA环境,希望能够正确地设置它,首先处理下面的问题。
问题:
两个LOB应用程序都需要与文档管理系统交互,方法是在创建新策略、客户等以及修改新策略时发出信号。我们无法访问LOB-一个修改的源代码。我们确实可以访问LOB源代码,但是开发人员正在忙于其他项目。无论如何,我们认为,在记录发生更改时,让数据库通知DMS要更容易,而不是在应用程序源代码中的所有位置都可能更改记录,并通过应用层进行警告。
我知道数据库即IPC是一种反模式,尽管我已经阅读了关于如何最好地实现这一目标的建议,至少对于Server:使用DB表作为消息/作业队列的最佳方法和http://rusanu.com/2010/03/26/using-tables-as-queues/是这样的。我已经在用SQL Service Broker外部激活点对点的方式从LOB向DMS发送信号。
呼!你认为如何?
发布于 2013-09-02 05:55:28
免责声明:我是AdroitLogic的首席技术官,负责构建问题中提到的UltraESB
您可以很容易地让ESB本身轮询MS和Oracle数据库以获得要执行的新操作。这可以安排在ESB中,提供cron计划等,或者简单的延迟(例如每小时一次)。ESB可以丰富、转换和路由等,但是您需要一种方法来跟踪哪些记录已被成功处理--也许在被轮询的表中有一个新列?一旦可用,您确实不需要持久消息队列,因为ESB可以轮询未处理的记录,对它们执行任何期望的操作,并将它们发布到DMS,并将状态更新为成功或失败。除非DMS拒绝或变得不可用,否则没有真正的重新尝试点,但是您可能想要这样做,这也是可能的。如果DMS接受记录,ESB可以直接更新表列。如果您真的想使用消息队列--这当然也是可能的,并且取决于您的选择。
https://stackoverflow.com/questions/18531535
复制相似问题