What I want to do:
- Update a Salesforce object when a row is changed in the database.
- I know how to update Salesforce with a Mule flow once Mule receives notification that an object needs updated.
- The main problem I need to solve is, how can I notify Mule that the database has changed.
What I can't do:
- Change any of the dependent software or versions.
- Change the application that updates the database.
What I want to avoid:
- Polling the database for changes. The Mule Connector for SQL Server uses JDBC and polls for changes.
What I have to work with (cannot be changed):
- MS SQL Server 2012
- Mule ESB 3.7
- Salesforce
What I have done so far:
- Created a flow in Mule using the SQL Server Mule Connector to poll the database for changes.
- The next attempt to make the process event driven was to create a CLR function that would put a message on a RabbitMQ to be consumed by a Mule RabbitMQ Connector. That failed because the RabbitMQ assembly couldn’t be included in SQL Server runtime.
- The third attempt is to use a Service Broker to make a REST callout to a Mule HTTP endpoint component when a row is modified. Mule would then transform and modify the Salesforce object using the Mule Salesforce connector.
What I’m expecting:
- Given the inherent incompatibilities between Java and .Net/SQL Server, I’m thinking that using a Service Broker to make a REST call to Mule is the best solution I am going to get.
Is there a better solution?