This post is a quick notes on the various options to integrate a SaaS offering with an enterprise:
1. Get the webservices of the client and have a custom implementation (running a service on a event and/or cron task) of calling these services.
2. Make use of a Message Queue like ActiveMQ or RabbitMQ.
Apache ActiveMQ is based on JMS specifications where as RabbitMQ is based on AMQP specifications. A similar tool from Apache is the Qpid messaging system.
AMQP is an application-level standard for Message Oriented Middleware (MOM). JMS is a standard API for Java for communicating with MOM. One of the main difference is that in AMQP a producer sends to an exchange without knowing the actual message distribution strategy while in JMS the producer targets either a queue or a topic (thus being aware of the type of message routing in place).
3. Make use of Integration Frameworks like Apache Camel or Spring Integration Framework
4. Use an Enterprise Resource Bus (ESB) like Apache ServiceMix, TIBCO ESB, Oracle Service Bus
Each of the points increases the complexity by one step, starting from a simple one to Message Queue to Integration Framework and finally an ESB, the most advanced integration an enterprise can have.
As the complexity increases, so does the implementation effort and timeline. Keep it simple by using Message Queues as using for a decently scalable Integration.