Docker搭建ActiveMQ消息服務(wù)的方法

這篇文章主要介紹“Docker搭建ActiveMQ消息服務(wù)的方法”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Docker搭建ActiveMQ消息服務(wù)的方法”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的共青城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

概念

jms消息模式

點(diǎn)對(duì)點(diǎn)或隊(duì)列模式

包含三個(gè)角色:消息隊(duì)列(queue),發(fā)送者(sender),接收者(receiver)。每個(gè)消息都被發(fā)送到一個(gè)特定的隊(duì)列,接收者從隊(duì)列中獲取消息。隊(duì)列保留著消息,直到他們被消費(fèi)或超時(shí)。

  • 每個(gè)消息只有一個(gè)消費(fèi)者(consumer),即一旦被消費(fèi),消息就不再在消息隊(duì)列中

  • 發(fā)送者和接收者之間在時(shí)間上沒有依賴性,也就是說當(dāng)發(fā)送者發(fā)送了消息之后,不管接收者有沒有正在運(yùn)行,它不會(huì)影響到消息被發(fā)送到隊(duì)列

  • 接收者在成功接收消息之后需向隊(duì)列應(yīng)答成功

pub/sub 發(fā)布/訂閱模式

包含三個(gè)角色:主題(topic),發(fā)布者(publisher),訂閱者(subscriber) 。多個(gè)發(fā)布者將消息發(fā)送到topic,系統(tǒng)將這些消息傳遞給多個(gè)訂閱者。

  • 每個(gè)消息可以有多個(gè)消費(fèi)者

  • 發(fā)布者和訂閱者之間有時(shí)間上的依賴性。針對(duì)某個(gè)主題(topic)的訂閱者,它必須創(chuàng)建一個(gè)訂閱者之后,才能消費(fèi)發(fā)布者的消息。

  • 為了消費(fèi)消息,訂閱者必須保持運(yùn)行的狀態(tài)。

為了緩和這樣嚴(yán)格的時(shí)間相關(guān)性,jms允許訂閱者創(chuàng)建一個(gè)可持久化的訂閱。這樣,即使訂閱者沒有被激活(運(yùn)行),它也能接收到發(fā)布者的消息。

如果希望發(fā)送的消息可以不被做任何處理、或者只被一個(gè)消息者處理、或者可以被多個(gè)消費(fèi)者處理的話,那么可以采用pub/sub模型。

jms消息基本組件

connectionfactory

創(chuàng)建connection對(duì)象的工廠,針對(duì)兩種不同的jms消息模型,分別有queueconnectionfactory和topicconnectionfactory兩種??梢酝ㄟ^jndi來查找connectionfactory對(duì)象。

destination

destination的意思是消息生產(chǎn)者的消息發(fā)送目標(biāo)或者說消息消費(fèi)者的消息來源。對(duì)于消息生產(chǎn)者來說,它的destination是某個(gè)隊(duì)列(queue)或某個(gè)主題(topic);對(duì)于消息消費(fèi)者來說,它的destination也是某個(gè)隊(duì)列或主題(即消息來源)。

所以,destination實(shí)際上就是兩種類型的對(duì)象:queue、topic可以通過jndi來查找destination。

connection

connection表示在客戶端和jms系統(tǒng)之間建立的鏈接(對(duì)tcp/ip socket的包裝)。connection可以產(chǎn)生一個(gè)或多個(gè)session。跟connectionfactory一樣,connection也有兩種類型:queueconnection和topicconnection。

session

session是操作消息的接口??梢酝ㄟ^session創(chuàng)建生產(chǎn)者、消費(fèi)者、消息等。session提供了事務(wù)的功能。當(dāng)需要使用session發(fā)送/接收多個(gè)消息時(shí),可以將這些發(fā)送/接收動(dòng)作放到一個(gè)事務(wù)中。同樣,也分queuesession和topicsession。

消息的生產(chǎn)者

消息生產(chǎn)者由session創(chuàng)建,并用于將消息發(fā)送到destination。同樣,消息生產(chǎn)者分兩種類型:queuesender和topicpublisher??梢哉{(diào)用消息生產(chǎn)者的方法(send或publish方法)發(fā)送消息。

消息消費(fèi)者

消息消費(fèi)者由session創(chuàng)建,用于接收被發(fā)送到destination的消息。兩種類型:queuereceiver和topicsubscriber。可分別通過session的createreceiver(queue)或createsubscriber(topic)來創(chuàng)建。當(dāng)然,也可以session的creatdurablesubscriber方法來創(chuàng)建持久化的訂閱者。

messagelistener

消息監(jiān)聽器。如果注冊(cè)了消息監(jiān)聽器,一旦消息到達(dá),將自動(dòng)調(diào)用監(jiān)聽器的onmessage方法。ejb中的mdb(message-driven bean)就是一種messagelistener。

transport傳輸方式

activemq目前支持的transport有:vm transport、tcp transport、nio transport、ssl transport、peer transport、udp transport、multicast transport、http and https transport、websockets transport、failover transport、fanout transport、discovery transport、zeroconf transport等。

  • vm transport:允許客戶端和broker直接在vm內(nèi)部通信,采用的連接不是socket連接,而是直接的方法調(diào)用,從而避免了網(wǎng)絡(luò)傳輸?shù)拈_銷。應(yīng)用場(chǎng)景也僅限于broker和客戶端在同一jvm環(huán)境下。

  • tcp transport:客戶端通過tcp socket連接到遠(yuǎn)程broker。配置語法:

  • tcp://hostname:port?transportoptions

  • http and https transport:允許客戶端使用rest或者ajax的方式進(jìn)行連接。這意味著可以直接使用javascript向activemq發(fā)送消息。

  • websockets transport:允許客戶端通過html5標(biāo)準(zhǔn)的websockets方式連接到broker。

  • failover transport:青龍系統(tǒng)mq采用的就是這種連接方式。這種方式具備自動(dòng)重新連接的機(jī)制,工作在其他transport的上層,用于建立可靠的傳輸。允許配置任意多個(gè)的uri,該機(jī)制將會(huì)自動(dòng)選擇其中的一個(gè)uri來嘗試連接。配置語法:

  • failover:(tcp://localhost:61616,tcp://localhost:61617,.....)?transportoptions

  • fanout transport:主要適用于生產(chǎn)消息發(fā)向多個(gè)代理。如果多個(gè)代理出現(xiàn)環(huán)路,可能造成消費(fèi)者接收重復(fù)的消息。所以,使用該協(xié)議時(shí),最好將消息發(fā)送給多個(gè)不相連接的代理。

 persistence持久化存儲(chǔ)

amq message store

activemq 5.0 的缺省持久化存儲(chǔ)方式。

kaha persistence

這是一個(gè)專門針對(duì)消息持久化的解決方案。它對(duì)典型的消息使用模式進(jìn)行了優(yōu)化。

jdbc persistence

目前支持的數(shù)據(jù)庫(kù)有:apache derby, axion, db2, hsql, informix, maxdb, MySQL, oracle, postgresql, sqlserver, sybase。

disable persistence

不應(yīng)用持久化存儲(chǔ)。

集群方案(master / slave)

pure master slave

  • 無單點(diǎn)故障;

  • 不需要依賴共享文件系統(tǒng)或是共享數(shù)據(jù)庫(kù),使用 kahadb的方式持久化存儲(chǔ);

  • 一個(gè)master只能帶一個(gè)slave;

  • master工作期間,會(huì)將消息狀況自動(dòng)同步到slave;

  • master一旦崩潰,slave自動(dòng)接替其工作,已發(fā)送并尚未消費(fèi)的消息繼續(xù)有效;

  • slave接手后,必須停止slave才能重啟先前的master;

 shared file system master slave

jdbc master slave

  • 配置上,不存在master和slave的區(qū)分,多個(gè)共享數(shù)據(jù)源的broker構(gòu)成jdbc master slave;

  • 首先搶到資源(數(shù)據(jù)庫(kù)鎖)的broker成為master,其他broker定期嘗試搶占資源;

  • 一旦master崩潰,其他broker搶占資源,最終只有一臺(tái)搶到,立刻成為master,之前的master即便重啟成功,也只能作為slave等待;

 安裝說明

這里使用docker安裝,查詢docker鏡像:

docker search activemq

下載docker鏡像:

docker pull webcenter/activemq

創(chuàng)建&運(yùn)行activemq容器:

docker run -d --name myactivemq -p 61617:61616 -p 8162:8161 webcenter/activemq

61616是 activemq 的容器使用端口(映射為61617),8161是 web 頁面管理端口(對(duì)外映射為8162)

查看創(chuàng)建的容器,如果存在說明安裝成功:

docker ps

查看web管理頁面:

瀏覽器輸入 http://ip :8162 點(diǎn)擊manage activemq broker使用默認(rèn)賬號(hào)/密碼:admin/admin進(jìn)入查看。

Docker搭建ActiveMQ消息服務(wù)的方法

Docker搭建ActiveMQ消息服務(wù)的方法

配置訪問密碼

進(jìn)入docker容器:

docker exec -it myactivemq /bin/bash

控制臺(tái)界面設(shè)置用戶名和密碼:

# 位于根目錄 conf 目錄下
vi jetty-realm.properties

# 修改密碼
# username: password [,rolename ...]
admin: admin, admin

配置連接密碼

編輯activemq.xml文件,放置到 shutdownhooks 下方即可。

<!-- 添加訪問activemq的賬號(hào)密碼 -->
<plugins>
  <simpleauthenticationplugin>
    <users>
      <authenticationuser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
    </users>
  </simpleauthenticationplugin>
</plugins>

修改conf中credentials.properties文件進(jìn)行密碼設(shè)置:

activemq.username=admin
activemq.password=123456
guest.password=123456

注意事項(xiàng)

如果是云服務(wù)器,記得開放相關(guān)端口(61617/8160)

關(guān)于“Docker搭建ActiveMQ消息服務(wù)的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

網(wǎng)站名稱:Docker搭建ActiveMQ消息服務(wù)的方法
文章來源:http://muchs.cn/article0/ipghoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站收錄、定制網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)