一、什麼是JMS
JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。
發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發給接收者。
這種模式下:
- 發送和接收是異步的,發送者無需等待;
- 二者的生命週期未必相同:發送消息的時候接收者不一定運行,接收消息的時候發送者也不一定運行;
- 一對多通信:對於一個消息可以有多個接收者。
JAVA 消息服務(JMS)定義了Java 中訪問消息中間件的接口。JMS 只是接口,並沒有給予實現,實現JMS 接口的消息中間件稱爲JMS Provider。
已有的 MOM 系統包括:
- Apache的ActiveMQ
- 阿里巴巴的RocketMQ
- RabbitMQ等等
- IBM 的MQSeries
- Microsoft 的MSMQ和BEA的MessageQ
他們基本都遵循JMS規範
二、什麼是ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位,可以說ActiveMQ在業界應用最廣泛,當然如果想要有更強大的性能和海量數據處理能力,ActiveMQ還需要不斷的升級版本,80%以上的業務我們使用ActiveMQ以及足夠滿足需求,當然後續如天貓、淘寶網這種大型的電商網站,尤其是雙11這種特殊時間,ActiveMQ需要進行很複雜的優化源碼以及架構設計才能完成,適合使用RocketMQ。