個人專題目錄
1. 消息中間件概述
1.1 AMQP 和 JMS
MQ是消息通信的模型;實現(xiàn)MQ的大致有兩種主流方式:AMQP、JMS。
AMQP
AMQP是一種協(xié)議,更準確的說是一種binary wire-level protocol(鏈接協(xié)議)。這是其和JMS的本質差別,AMQP不從API層進行限定,而是直接定義網絡交換的數據格式。
JMS
JMS即Java消息服務(JavaMessage Service)應用程序接口,是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統(tǒng)中發(fā)送消息,進行異步通信。
AMQP 與 JMS 區(qū)別
- JMS是定義了統(tǒng)一的接口,來對消息操作進行統(tǒng)一;AMQP是通過規(guī)定協(xié)議來統(tǒng)一數據交互的格式
- JMS限定了必須使用Java語言;AMQP只是協(xié)議,不規(guī)定實現(xiàn)方式,因此是跨語言的。
- JMS規(guī)定了兩種消息模式;而AMQP的消息模式更加豐富
1.2 消息隊列產品
市場上常見的消息隊列有如下:
- ActiveMQ:基于JMS
- ZeroMQ:基于C語言開發(fā)
- RabbitMQ:基于AMQP協(xié)議,erlang語言開發(fā),穩(wěn)定性好
- RocketMQ:基于JMS,阿里巴巴產品
- Kafka:類似MQ的產品;分布式消息系統(tǒng),高吞吐量
1.3 RabbitMQ
RabbitMQ是由erlang語言開發(fā),基于AMQP(Advanced Message Queue 高級消息隊列協(xié)議)協(xié)議實現(xiàn)的消息隊列,它是一種應用程序之間的通信方法,消息隊列在分布式系統(tǒng)開發(fā)中應用非常廣泛。
RabbitMQ官方地址:http://www.rabbitmq.com/
RabbitMQ提供了6種模式:簡單模式,work模式,Publish/Subscribe發(fā)布與訂閱模式,Routing路由模式,Topics主題模式,RPC遠程調用模式(遠程調用,不太算MQ;暫不作介紹);