過了個春節(jié),回到公司的成小胖變成了成大胖。但是你們千萬別以為他那個大肚子里面裝的都是肥肉,里面的墨水也多了不少嘞,畢竟成小胖利用春節(jié)的半個月時間專心學(xué)習(xí)并研究了 ActiveMQ,嘿嘿……
這不,為了檢驗下自己的學(xué)習(xí)成果,上班的第一天成小胖就去找架構(gòu)師老王交流 ActiveMQ 相關(guān)的知識,還順便向老王討了個紅包,可把成小胖給高興壞了。
“來,根據(jù)你的了解說下 ActiveMQ 是什么?!?/p>
“這個簡單,ActiveMQ 是一個 MOM,具體來說是一個實現(xiàn)了 JMS 規(guī)范的系統(tǒng)間遠(yuǎn)程通信的消息代理。它……”
“等等,先解釋下什么是 MOM?!?/p>
“好。MOM 就是面向消息中間件(Message-oriented middleware),是用于以分布式應(yīng)用或系統(tǒng)中的異步、松耦合、可靠、可擴(kuò)展和安全通信的一類軟件。MOM 的總體思想是它作為消息發(fā)送器和消息接收器之間的消息中介,這種中介提供了一個全新水平的松耦合?!?/span>
“JMS呢?”
成小胖是個追求極致的人,為了解釋得更通俗易懂,索性搬來一塊白板邊畫邊說。
“JMS 叫做 Java 消息服務(wù)(Java Message Service),是 Java 平臺上有關(guān)面向 MOM 的技術(shù)規(guī)范,旨在通過提供標(biāo)準(zhǔn)的產(chǎn)生、發(fā)送、接收和處理消息的 API 簡化企業(yè)應(yīng)用的開發(fā),類似于 JDBC 和關(guān)系型數(shù)據(jù)庫通信方式的抽象?!?/span>
“嗯,很好。下面的這些概念你也需要特別理解下”:
Provider:純 Java 語言編寫的 JMS 接口實現(xiàn)(比如 ActiveMQ 就是)
Domains:消息傳遞方式,包括點對點(P2P)、發(fā)布/訂閱(Pub/Sub)兩種
Connection factory:客戶端使用連接工廠來創(chuàng)建與 JMS provider 的連接
Destination:消息被尋址、發(fā)送以及接收的對象
“你來說說這其中 P2P 和 Pub/Sub 的區(qū)別吧”,老王給成小胖拋出了一個問題。
成小胖可不是吃素的,畢竟要是吃素的話他也吃不到這么胖……這些基本概念對他來說都是小事一樁:
P2P (點對點)消息域使用 queue 作