如何将事件从SQL Server发送到Mule?

时间:2015-09-21 15:29:32

标签: sql-server mule

我想做什么:

  • 在数据库中更改行时更新Salesforce对象。
  • 我知道一旦Mule收到对象需要更新的通知,如何使用Mule流更新Salesforce。
  • 我需要解决的主要问题是,如何通知Mule数据库已更改。

我不能做的事情:

  • 更改任何相关软件或版本。
  • 更改更新数据库的应用程序。

我想避免的事情:

  • 轮询数据库以进行更改。 SQL Server的Mule Connector使用JDBC并轮询更改。

我必须使用的内容(无法更改):

  • MS SQL Server 2012
  • Mule ESB 3.7
  • Salesforce的

到目前为止我做了什么:

  1. 使用SQL Server Mule Connector在Mule中创建一个流,以轮询数据库以进行更改。
  2. 下一次使进程事件驱动的尝试是创建一个CLR函数,该函数将消息放在RabbitMQ上以供Mule RabbitMQ连接器使用。失败的原因是RabbitMQ程序集无法包含在SQL Server运行时中。
  3. 第三次尝试是在修改行时使用Service Broker对Mule HTTP端点组件进行REST调用。然后,Mule将使用Mule Salesforce连接器转换和修改Salesforce对象。
  4. 我期待的是什么:

    • 鉴于Java和.Net / SQL Server之间固有的不兼容性,我认为使用Service Broker对Mule进行REST调用是我将要获得的最佳解决方案。

    有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点

http://www.codeproject.com/Articles/428200/How-to-invoke-a-Web-Service-from-a-Stored-Procedur

Best Way to call a Web Service from TSQL

但在我看来这不是一个好主意。

Mule是一个中间件层,用于控制与不同系统的交互,而您的数据库无法做到这一点。将来如果您想与另一个系统共享相同的数据,那么对您来说就是问题。

如果您的案例仅针对Salesforce和Database之间的交互,则需要最终维护数据库存储过程或触发器来完成工作。

因此,让Mule控制您需要处理的数据。

答案 1 :(得分:0)

您是否查看过Oracle中的数据库更改通知概念?它旨在通知中间层应用程序。我不是数据库专家,因此无法为内部人员提供太多建议,但我知道oracle有这方面的建议。如果您的团队中有DBA团队(或专家)与他交谈。