activemq資料庫
1. 用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
2. apache-activemq-5.8.0怎麼連接資料庫
安裝環境:linux rhe
activemq版本:5.8.0
1.從http://activemq.apache.org/download.html地址下載apache-activemq-5.8.0-bin.tar.gz包
2.解壓縮到指定的目錄
Shell代碼
tar zxvf apache-activemq-5.8.0-bin.tar.gz -C /usr/local
解壓縮後會在/usr/local下生成apache-activemq-5.8.0目錄,其中bin目錄下就是activeMQ的執行腳本存在的位置了。
3.如果啟動腳本無法執行,我們需要修改一下許可權
Shell代碼
cd /usr/local/apache-activemq-5.8.0/bin
chmod 775 activemq
4.設置activeMQ配置環境.activemqrc
Shell代碼
bin/activemq setup ~/.activemqrc
5.啟動activeMQ
在activemq主目錄鍵入如下命令:
Shell代碼
bin/activemq start
然後會看到控制台日誌輸出如下:
Shell代碼
INFO: Loading '/home/chenzhou/.activemqrc'
INFO: Using java '/usr/java/jdk1.6.0_03/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/usr/local/apache-activemq-5.8.0/data/activemq-localhost.localdomain.pid' (pid '18567')
我們也可以把日誌輸出到指定的日誌文件中
Shell代碼
bin/activemq start > /tmp/smlog 2>&1 &
然後日誌就輸出到/tmp/smlog文件中了
注意:官方文檔中標明了如果按上述的方式啟動後,如果我們把linux終端窗口關閉的話,則服務也會停止