說明
不久前,因為公司任務而去研究ActiveMQ。受益於網上眾多樂於分享的博主的文章,如今對AMQ的研究成果已有小成,現在把其中不涉及敏感內容的東西整理出來,分享在網上,希望能惠澤后來者。我讀了近乎100篇關於AMQ的博文,有些博主將文章做成一個系列,可以讓讀者循序漸進的學習,這個方式很好,我也將采取同樣的方式。在接下來的一系列關於AMQ的文章中,順序幾乎是我學習的順序,但也根據合理性做了優化。
本次研究基於的環境如下:
- 操作系統:win7 64
- JDK版本:1.7.0_75
- ActiveMQ版本:5.13.2
- zookeeper版本:3.4.8
第一部分:JMS基礎
這一部分主要介紹JMS的API,和基於此的客戶端編程。
- 01. ActiveMQ相關背景
介紹中間件、MOM、JMS、ActiveMQ,及相互的關系。 - 02. JMS客戶端編程模型
介紹客戶端編程的模型:發送消息到JMS Provider,或從JMS Provider中讀取消息所使用的API和所遵循的步驟。 - 03. 消息的接收方式
同步接收是阻塞式的接收,異步接收是基於監聽器的接收-實時的接收。 - 04. 消息選擇器
消息選擇器可以讓接收者只接收到感興趣的消息。 - 05. 客戶端模板化
本人嘗試的一次模板化,如果你也這樣做過,就會更容易理解第二部分的內容。 - 06. 可靠消息傳送
ActiveAMQ如何確保消息的可靠傳送。 - 07. 持久性訂閱
如果持久訂閱者處於非活動狀態,JMS Provider可以為持久訂閱者保留消息。
第二部分:Spring-JMS
這一部分主要介紹Spring對JMS的支持,如何通過Spring來簡化JMS客戶端的開發,如何通過配置加入Spring的支持。
- 08. Spring-JmsTemplate之發送
使用JmsTemplate來發送消息。 - 09. Spring-JmsTemplate之接收
使用JmsTemplate來接收消息。 - 10. Spring-JmsTemplate之瀏覽
使用JmsTemplate來瀏覽消息。與接收相比,瀏覽只是獲取消息的內容,但是不會導致消息從隊列中移除;接收則會移除隊列中的消息。 - 11. Spring-JmsTemplate之執行
對JmsTemplate底層方法的介紹,這些方法支撐了發送、接收、瀏覽的實現。 - 12. Spring-JmsTemplate特性設置
介紹如何在JmsTemplate中設置一些特性。 - 13. Spring-jms的配置
如何通過配置來引入Spring對JMS的支持。
第三部分:實踐方案
這一部分主要介紹如何將ActiveMQ應用到實際的場景中。
- 14. 實踐方案:基於ZooKeeper + ActiveMQ + replicatedLevelDB的主從部署
使用ZooKeeper來實現ActiveMQ的主從部署,ActiveMQ需要選擇replicatedLevelDB持久化方案。 - 15. 實踐方案:基於ActiveMQ的統一日志服務
如何通過Log4j將日志發送到隊列。發送方基於Log4j編程,而不是JMS的API,如果你掌握了前面的內容,或許你更傾向於使用JMS或者Sring提供的支持。
第四部分:測試記錄
這一部分主要記錄測試的設計、步驟和結果。只是針對第一部分中的重要的概念進行了測試。
第五部分:其他
- 19. 問題解決 - 控制Atomikos的日志輸出
分布式事務中用到了Atomikos,可能會發現它吐出了太多的INFO級別的日志,這里提供解決方案。— 基於對slf4j的分析。 - 20. 使用Apache ActiveMQBrowser監控ActiveMQ
這個工具可以用來監控消息隊列中的消息。 - 21. 異步發送
這是一篇翻譯,介紹異步發送。
