国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ActiveMQ筆記(1):編譯、安裝、示例代碼

雖然ActiveMQ提供了發(fā)布版本,但是建議同學(xué)們自己下載源代碼編譯,以后萬一有坑,還可以嘗試自己改改源碼。

1.1 https://github.com/apache/activemq/releases 到這里下載最新的release版源碼(當(dāng)前最新版本為5.13.2),并解壓到某個目錄(以下用$ACTIVEMQ_HOME代替解壓根目錄)

1.2 編譯

1
2
cd $ACTIVEMQ_HOME
mvn clean install -Dmaven.test.skip=true

編譯成功后,在$ACTIVEMQ_HOME/assembly/target下會生成可xxx.bin.tar.gz的可執(zhí)行文件壓縮包

 

二、啟動

將編譯后得到的xxx.bin.tar.gz解壓,然后執(zhí)行 

1
2
3
tar -zxvf apache-activemq-5.13.2-bin.tar.gz
cd apache-activemq-5.13.2/bin
./activemq start

后面的可選參數(shù)還有 status、restart、stop、list等,不清楚的地方,直接 --help 查看。

 

三、管理界面

啟動成功后,可以瀏覽 http://localhost:8161/admin/

默認(rèn)用戶名、密碼:admin/admin

管理界面是用jetty做容器的,如果想修改管理界面的端口,可以編輯../conf/jetty.xml,找到下面這一段:

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">    <!-- the default port number for the web console -->    <property name="host" value="0.0.0.0"/>    <property name="port" value="8161"/></bean>

用戶名/密碼是在 ../conf/jetty-realm.properties 里,比如要增加一個管理員jimmy/123456,可參考下面修改:

1
2
3
admin: admin, admin
jimmy: 123456, admin
user: user, user 

  

四、示例代碼

通常消息隊列都支持二種模式:基于主題(topic)的發(fā)布(Publish)/訂閱(Subscribe)模式、點對點(p2p)模式,下面的示例代碼為p2p場景。

先給出gradle項目的依賴項

4.1 spring配置文件

View Code

注:brokerURL的地址是在conf/activemq.xml里定義里,見下面的片段

View Code

另外,連接ActiveMQ默認(rèn)情況下,沒有任何安全機制,也就是說任何人只要知道brokerURL都能連接,這顯然不安全,可以在activemq.xml里,找到<broker>節(jié)點,緊貼它的地方添加下面這段:

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">        <plugins>               <simpleAuthenticationPlugin>                   <users>                       <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>                   </users>               </simpleAuthenticationPlugin>           </plugins>...   </broker>

那么問題來了,這個activemq.username{activemq.password}的值是在哪里定義的呢?仍然在activemq.xml里找答案,在最開始的地方有一段:

1 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">2     <property name="locations">3         <value>file:${activemq.conf}/credentials.properties</value>4     </property>5 </bean>

換句話說,conf/credentials.properties這里保存的就是連接activemq的用戶名和密碼,啟用連接的安全機制后,spring的配置文件要做如下調(diào)整:

View Code

 

4.2 生產(chǎn)者代碼

發(fā)送消息的代碼有二種寫法:

a)利用spring-jms的JmsTemplate

b) 利用activeMQ的Producer

這二種方式在性能上差不多,4核8G的mac book pro上,大致每秒可以寫入3k+條消息。但是從代碼量來講,明顯JmsTemplate的代碼量更少,推薦使用。

4.3 消費者代碼

當(dāng)然也可以用JmsTemplate接收消息,但是一般得自己去寫while(true)循環(huán),而且默認(rèn)情況下,上下文如果不是同一個連接,JmsTemplate A發(fā)出的消息,JmsTemplate B是接收不到的,所以不建議這種方式。最好參考下面的示例,使用JMS的MessageLisenter去監(jiān)聽消息,這也是JMS規(guī)范建議的標(biāo)準(zhǔn)做法:

4.4 嵌入式Broker

類似jetty、tombat之類可以內(nèi)嵌到代碼中啟動一樣,ActiveMQ也可以直接在代碼中內(nèi)嵌啟動,這個很方便一些輕量級的使用場景,示例代碼如下:

1
2
3
4
5
6
7
8
public class EmbbedBroker {
    public static void main(String[] args) throws Exception {
        BrokerService broker = new BrokerService();
        broker.addConnector(");

關(guān)于嵌入式Broker的更多細(xì)節(jié),可以參考 http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

4.5 消息的自動確認(rèn)與手動確認(rèn)

在接收消息時,如果Session使用的是 Session.AUTO_ACKNOWLEDGE,即:

1
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

則消息一旦被接受,不論onMessage()里的業(yè)務(wù)邏輯執(zhí)行成功與否,消息都將從ActiveMQ的隊列里立刻刪除。如果希望業(yè)務(wù)處理成功后,再通知ActiveMQ刪除消息,可以改成:

1
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

然后onMessage方法調(diào)用message.acknowledge手動確認(rèn),參考以下代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
static class ActiveMQListener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        try {
            if (message instanceof TextMessage) {
                System.out.println(((TextMessage) message).getText());
                message.acknowledge(); //手動確認(rèn)消息
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring+ActiveMQ+Mysql 配備JMS
JMS與MQ詳解
把ActiveMQ的控制臺整合到你的web程序中-ahuaxuan -JavaEye技術(shù)社...
ActiveMQ 即時通訊服務(wù) 淺析(一)
JMS簡介與ActiveMQ實戰(zhàn)
ActiveMQ使用筆記
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服