㈠ 用java代碼如何設置activemq消息持久化到資料庫中
ActiveMQ持久化消息的二種方式;
1、持久化為文件
這個裝ActiveMQ時默認就是這種,只要設置消息為持久化就可以了。涉及到的配置和代碼有:
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
procer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);
2、持久化為MySql
首先需要把MySql的驅動放到ActiveMQ的Lib目錄下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar
接下來修改配置文件
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>
在配置文件中的broker節點外增加
<bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
從配置中可以看出資料庫的名稱是activemq,需要手動在MySql中增加這個庫。
然後重新啟動消息隊列,會發現多了3張表
1:activemq_acks
2:activemq_lock
3:activemq_msgs
㈡ 如何在linux上配置activemq集群
配置ActiveMQ的集群需要修改conf目錄下的activemq.xml
具體信息
配置方式:Master-Slave方式
對於ActiveMQ有兩種運行方式,一種是放入lib,和web應用一同啟動,另外一種是作為單獨的mq伺服器運行,因為涉及了cluster,我們採用了單獨運行的配置。
下載並解壓後
我們進入activeMq目錄。
進入%ActiveMQ%/bin
選擇啟動activemq.bat
如果啟動過程中沒有出現錯誤,我們就可以進行其他的配置。
配置文件的位置在%ActiveMQ%/conf中
編寫測試程序:一個用來發送Message,一個用來接收Message
配置文件
修改conf目錄下的activemq.xml文件
name="host61616" uri="static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)" />
name="host11616" uri="static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)" />
具體看http://embed.21ic.com/了解
㈢ c++ activemq start失敗
原因及解決方法:
1、主機hostname有非法字元
修改主機hostname的時候,不小心寫入了非法字元,如下劃線「_」,導致服務啟動失敗。
解決:修改hostname就可以了。
修改hostname的方法:
1、方法一hostnamectl命令修改,不需要重啟新開一個窗口就生效。
語法: hostnamectl set-hostname 新主機名。
2、方法二:修改配置文件 /etc/hostname 保存退出。
修改完成之後需要重啟生效。
3、方法三:臨時修改主機名。
hostname 新主機名。
hostname命名規則可參考:
https://en.wikipedia.org/wiki/Hostname
2、配置文件IP配置不正確。
配置文件conf/activemq.xml文件IP配置不正確,activemq啟動失敗。
解決:IP修改正確就好了。
不過網上也帖子提到關於「Cannot assign requested address」報錯的其他原因和解決方法:
1、/etc/hosts解析異常,不能解析本機IP,需手動添加 127.0.0.1 localhost。
2、/etc/hosts文件許可權異常,修改為644。
㈣ activemq 一台伺服器如何配置多個broker
步驟如下:
1、把整個conf文件夾復制一份,比如叫conf2
2、修改裡面的activemq.xml文件
①brokerName不能和原來的重復
②數據存放的文件名稱不能重復,比如<kahaDB directory = "${activemq.data}/kahadb2"/>
③所有涉及的transportConnector的埠,都要和原來的不一樣。注意不要超出埠的范圍(0-65535)
3、修改jetty.xml,把裡面的默認埠號8161改成別的,不如9161
4、到bin下面,復制一個activemq,比如叫activemq2
①修改程序的id,不能和原來的重復,ACTIVEMQ_PIDFILE="$ACTIVEMQ_DATA/activemq2.pid"
②修改配置文件路徑ACTIVEMQ_CONF="$ACTIVEMQ_BASE/conf2"
③修改埠,tcp://localhost:61616把61616改成和activemq.xml裡面的tcp埠一致。請注意,在activemq5.9.0版本中是這么修改。但我使用的是最新的5.12.1版本,在activemq中找不到該tcp埠的配置,折騰了半天才發現該版本把這個配置挪到了env文件。所以就需要拷貝一份env,比如就叫env2吧,然後再env2裡面把61616改成和activemq.xml裡面的tcp埠一致。最後別忘了把activemq2裡面對env的引用改成env2。ACTIVEMQ_CONFIGS="/etc/default/activemq $HOME/.activemqrc $ACTIVEMQ_HOME/bin/env2"
現在你可以到activemq的bin目錄下分別執行./activemq start 和 ./activemq2 start 了。這兩個broker服務應該能正常啟動了。