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