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
4
5
6
7
8
9
10
11 SQL Server持久化bean:12
13
14
15
17
18
19
20
21 Oracle持久化bean:22
23
24
25
26
27
28
29
30
31
32 DB2持久化bean:33
34
35
36
37
38
39
40
41
如圖所示:配置MSSQL數據庫
根據自己的服務器設定相關的信息。
4.修改持久化設置:
1
2
3
如圖所示:配置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);