ActiveMQ具體就不介紹了,直接介紹如何講ActiveMQ持久化到本地數據庫,以SQL Server 2008 R2為例
1.下載ActiveMQ后直接解壓,我下載的是apache-activemq-5.14.5-bin.zip。
2.打開conf下的activemq.xml,我要配置的是將消息持久化到SQL Server 2008 R2
3.增加配置:
1 Mysql持久化bean: 2 3 <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 4 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 5 <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/> 6 <property name="username" value="activemq"/> 7 <property name="password" value="activemq"/> 8 <property name="poolPreparedStatements" value="true"/> 9 </bean> 10 11 SQL Server持久化bean: 12 13 <bean id="mssql-ds" class="net.sourceforge.jtds.jdbcx.JtdsDataSource" destroy-method="close"> 14 <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> 15 <property name="url" value="jdbc:sqlserver://xx.xxx.x.xxx:1433;databaseName=DATANAME;user=USER;password=PASSWORD"/> 17 <property name="user" value="USER"/> 18 <property name="password" value="PASSWORD"/> 19 </bean> 20 21 Oracle持久化bean: 22 23 <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 24 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 25 <property name="url" value="jdbc:oracle:thin:@10.53.132.47:1521:activemq"/> 26 <propertyname="username" value="activemq"/> 27 <property name="password" value="activemq"/> 28 <property name="maxActive" value="200"/> 29 <property name="poolPreparedStatements" value="true"/> 30 </bean> 31 32 DB2持久化bean: 33 34 <bean id="db2-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 35 <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/> 36 <property name="url" value="jdbc:db2://hndb02.bf.ctc.com:50002/activemq"/> 37 <property name="username" value="activemq"/> 38 <property name="password" value="activemq"/> 39 <property name="maxActive" value="200"/> 40 <property name="poolPreparedStatements" value="true"/> 41 </bean>
如圖所示:配置MSSQL數據庫
根據自己的服務器設定相關的信息。
4.修改持久化設置:
1 <persistenceAdapter> 2 <jdbcPersistenceAdapter dataSource="#mssql-ds" createTablesOnStartup="true"/> 3 </persistenceAdapter>
如圖所示:配置jdbcPersistenceAdpater
5.最后,別忘了將MSSQL Server JDBC驅動sqljdbc4-4.0.jar(可以到微軟官網下載https://msdn.microsoft.com/zh-cn/library/mt683464.aspx)拷貝到lib目錄下,
好了,運行bin下的activemq.bat。
在數據庫中已建立好ActiveMQ持久化需要的數據表。如圖所示:如果配置成功,默認會創建三張表:
activemq_acks:ActiveMQ的簽收信息。
activemq_lock:ActiveMQ的鎖信息。
activemq_msgs:ActiveMQ的消息的信息
6.當表已成功創建,再次修改持久化設置中的創建表設置(只要第一次創建表成功就行了):
createTablesOnStartup="false"
7.管理登錄:
http://localhost:8161默認用戶和密碼均為admin
OK配置完成!
PS:如果你發現ActiveMQ添加了持久化后,發了消息,為什么activemq_msgs表中沒有記錄任何數據,其實這個是需要我們自己在代碼里控制的,需要設置MsgDeliveMode為Persistent,具體代碼如下:
1 //PERSISTENT:保存到磁盤,consumer消費之后,message被刪除。 2 //NON_PERSISTENT:保存到內存,消費之后message被清除。 3 //注意:堆積的消息太多可能導致內存溢出。 4 producer.Send(msg,MsgDeliveryMode.Persistent,level,TimeSpan.MinValue);
PS:如有疑問,請留言,未經允許,不得私自轉載,轉載請注明出處:https://www.cnblogs.com/xuliangxing/p/6866892.html