首先,在我失去你的注意力之前,我将写下我认为解决我的问题的过程。我的问题和现有设置在下面。这是我认为应该发生的事情,以允许未来的灵活性。请指教:
- 创建或修改记录时,数据库触发器会填充 SQL Service Broker 和 Oracle Advanced Queuing。
- 进程监视 SQL 和 Oracle 消息队列并将它们发送到 ESB。
- ESB(UltraESB?,易于设置和理解)依次将消息发送到真正的消息队列(RabbitMQ?易于设置和理解)。ESB 可能会丰富、路由等。
- 最后,其他一些进程使用 RabbitMQ 并指示 DMS 做什么:创建新策略文件夹、更新策略元数据等。
三重队列、MSSQL、Oracle 和 RabbitMQ 似乎有点矫枉过正,但另一方面,它们都执行不同的操作。
现有设置:
我有一个新的消息传递/ESB/中间件/SOA 环境,并希望正确设置它以首先处理以下问题。
- LOB-A:在 MS SQL 2008 数据库上用 JAVA 编写的保险应用程序
- LOB-B:在 Oracle 10.2 数据库上用 Visual Basic 6 编写的保险应用程序
- DMS:微软 SharePoint 2010
- 两个 LOB 应用都可能在未来 18 个月内被替换
- 未来可能会出现更多的保险应用程序,以及 CRM
问题:
两个 LOB 应用程序都需要通过在创建新策略、客户等以及修改它们时发出信号来与文档管理系统交互。我们无权访问 LOB-A 源代码进行修改。我们确实可以访问 LOB-B 源代码,但开发人员正忙于其他项目。无论如何,我们认为让数据库在记录发生更改时向 DMS 发出警报更容易,而不是在应用程序的源代码中找到记录可能被更改的所有位置并通过应用程序层发出警报。
我知道 Database-as-IPC 是一种反模式,尽管我已经阅读了有关如何最好地实现这一点的建议,至少对于 SQL Server 而言:Best way to use a DB table as a message/job queue and http:// /rusanu.com/2010/03/26/using-tables-as-queues/。我已经通过使用SQL Service Broker External Activation以点对点的方式从 LOB-A 向 DMS 发出信号。
哇!你怎么看?