RABBITMQ is an asynchronous message communication middleware, developed in Erlang language, implements the AMQP (Advanced Message Queue) protocol, is an open source product, currently the latest version is 3.6.0, official address: http://www.rabbitmq.com/.
Application scenarios. For a large software system, it will have a lot of components or modules or subsystems or (subsystem or Component or submodule). So how do these modules communicate? There is a big difference between this and the traditional IPC. Many of the traditional IPC are on a single system, the module coupling is very large, not suitable for expansion (Scalability), if the use of sockets so different modules can indeed be deployed to different machines, but there are still many problems to be solved. Like what:
1) How does the sender and receiver of the information maintain this connection, and how is the data lost during this period if the connection to the other party is interrupted?
2) How to reduce the coupling between sender and receiver?
3) How to get priority recipients to receive data first?
4) How do I load balance? Effectively balance the load of the receiver?
5) How to effectively send the data to the relevant recipients? In other words, the receiver subscribe different data, how to do a valid filter.
6) How can it be extensible and even send this communication module to cluster?
7) How to ensure that the recipient receives the complete, correct data?
The AMDQ protocol solves the above problems, and RABBITMQ implements AMQP.
The origin and development process of Message Queuing. 1983, there is an Indian Vivek Ranadive whim, think that the software system should also have similar hardware bus things, other applications can be connected to the software bus, easy to achieve the work of communication between applications. For this he created the Teknekron company, but it wasn't until 1985 that he finally found the first customer, Goldman Sachs, and the software bus that was born to solve the problem: financial transactions. The trader's cubicle was packed with various terminals to complete the transaction, and each terminal displayed different types of information. If a software bus is used to handle a variety of different types of information, the trader only needs a terminal to access the software bus and subscribe to the messages he wants. The release subscription model was born, and the first Message Queuing software Tib (the information Bus) was born. Soon, this data transmission mode has been more widely used, and entered the telecommunications, journalism industry. In 1994, Reuters acquired Teknekron. The rapid development of the software quickly received the attention of IBM, so in the late 80, IBM began to study its own Message Queuing software, 1993, the IBM MQ product line, after 17, the MQ series evolved into WebSphere MQ and dominate the commercial message queue market. During that time, Tib also lived, and later changed its name to rendezvous. In 1997, Teknekron was re-emerging as an independent company in the form of TIBCO. In the same year, Microsoft also developed its own messaging software MSMQ.
The birth of the JMS (Jave message service). MQ software fortified between several vendors, each product communication protocol, interface is not the same, if you choose a product, want to change another product, obviously need to modify the Access application. Supplier barriers maintain a high enough price and profitability, and only large organizations can use MQ. In order to break the barrier, so that the same application can consume different MQ products, 2001, JMS was born. JMS provides a common API interface that hides the actual interface of each MQ product, so that the application only needs to be programmed for the JMS API and the appropriate MQ driver is selected, and JMS takes care of the rest.
The birth of AMQP (Advanced Message Queuing protocol). Although JMS is well-glued to the interfaces of each MQ, the protocols for each MQ are inconsistent and not open. Obviously someone is not satisfied with this. In 2004, the JPMorgan Chase and Imatix collaborated on the development of AMQP, an open standard that anyone can enforce, and anyone who encodes this standard can interact with MQ from any AMQP vendor.
The origin of RABBITMQ. In 2004, Alexis, an entrepreneur in the financial sector in London, wanted to open a company to solve communication problems in a distributed environment, realizing that messaging was the solution for distributed computing. This time AMQP is starting to develop, and his financial background has made him aware of the main head of AMQP John O ' Hara, and is preparing to create an MQ service based on AMQP. He found Matthias. The study of Amqp,matthias on Erlang, which found that Erlang was well suited for dealing with distributed messaging, was validated in 2006 when they established Rabbit Technologies company to develop RABBITMQ. Everyone thought rabbit This name is good, after all, rabbit action very quickly, and breed up also very crazy. Just this time the AMQP draft is also public, thanks to the Erlang language, allowing them to quickly develop and keep pace with the AMQP standard. At present, RABBITMQ has been widely used, from small start-ups to commercial giants.
RABBITMQ Introduction 1-origin