Cyrus Beer

Senior Consultant, Technical Architect

Using Rabbit MQ to Tie Disparate Systems Together

Senior Consultant, Technical Architect

Several enterprise level companies have disparate back-end systems. There might be an Enterprise Resource Planning (ERP) system that talks to an e-commerce system that talks to a Learning Management System (LMS). Often times these systems are proprietary systems run on different software stacks.

One vendor solution might be a .Net solution, while another is Java. For the bleeding edge web site you would like to build, you might want to use node.js or Ruby on Rails. How do you get these disparate systems to communicate and communicate reliably? At Ayantek we have successfully used Rabbit Message Queue to coordinate the “messaging” between these systems. Rabbit is built on an open standard, AMQP (Advanced Message Queuing Protocol), that integrates directly and seamlessly with Java, .Net, Ruby, Python, and many other languages.

The concept is simple but powerful. A message is simply a UTF-8 encoded String – we use JSON – that is routed to one or more message queues that can be set up in Rabbit. Messages might come from the web from an end user placing an order. Messages might come from the completion of a long running back-end process. Or they might come from a devise emitting data into the cloud.

Rabbit reliably stores these messages in a queue until they can be delivered to other systems that have registered with Rabbit as accepting that type of message. Entities that accept messages are called consumers. If an order is placed, there might be two consumers – an ERP system, and an Accounting system. If both have registered with Rabbit as consumers of the “order placed” message, Rabbit will send the message off to both consumers. And if, say, the ERP system is down, rabbit will keep trying to deliver the message until the system in question is back up. Now owned by Pivotal and licensed open-source, Rabbit provides an easy-to-set up, fully cross-platform, reliable messaging solution to tie your disparate data sources together.