1. 程式人生 > >JMS學習筆記6

JMS學習筆記6


2、解壓apache-activemq-5.5.0-bin.zip檔案到檔案系統(比如D:\ActiveMQ-5.5.0);
3、執行bin/activemq.bat指令碼即可啟動AMQ:

Java程式碼  收藏程式碼
  1. INFO | ActiveMQ 5.5.0 JMS Message Broker (localhost) is starting  
  2. ......  
  3. INFO | Listening for connections at: tcp://SHI-AP33382A:61616

 當看到上面的日誌輸出時,表示AMQ已經啟動了;
4、預設情況下,AMQ使用conf/activemq.xml作為配置檔案,我們可修改它,然後以 bin/activemq.bat xbean:./conf/my.xml啟動AMQ;

三、持久化訊息(MySQL)

1、建立MySQL資料庫:要使用MySQL儲存訊息,必須告訴AMQ資料來源:

Sql程式碼  收藏程式碼
  1. /**  
  2.  * 建立資料庫  
  3.  */  
  4. CREATEDATABASE misc DEFAULT CHARSET=UTF8;  
  5. /**  
  6.  * 建立使用者和授權  
  7.  */  
  8. GRANTALLPRIVILEGESON misc.* TO'misc_root'@'%' IDENTIFIED BY'misc_root_pwd';  
  9. GRANTALLPRIVILEGESON misc.* TO'misc_root'@'localhost' IDENTIFIED BY'misc_root_pwd';  

通過上面的SQL指令碼,我們建立了名為misc的資料庫,並且把所有許可權都賦予了misc_root的使用者;
由於AMQ需要在本資料庫中建立資料表,因此使用者的許可權必須具有建表許可權,ActiveMQ是內建的建庫指令碼程式,所以,只需要正確的配置資料來源即可;

因為接下來我們修改AMQ的預設配置檔案,所以先備份conf/activemq.xml檔案;
2、新增MySQL資料來源:預設情況下,AMQ使用KahaDB儲存(我對KahaDB不瞭解),註釋到KahaDB的配置方式,改為MySQL的:

Xml程式碼  收藏程式碼
  1. <!--  
  2. <persistenceAdapter>
  3.     <kahaDBdirectory="${activemq.base}/data/kahadb"/>
  4. </persistenceAdapter>
  5. -->
  6. <persistenceAdapter>
  7. <jdbcPersistenceAdapter data
    Directory="${activemq.base}/data" 
    dataSource="#MySQL-DS"/>
  8. </persistenceAdapter>
 注意引用配置的資料來源要加上#。。


該配置表示,我們將要使用一個叫做“MySQL-DS”的JDBC資料來源;
3、配置MySQL資料來源:在</broker>節點後面,增加MySQL資料來源配置:

Xml程式碼  收藏程式碼
  1. <!-- MySQL DataSource -->
  2. <beanid="MySQL-DS"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
  3.     <propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
  4.     <propertyname="url"value="jdbc:mysql://127.0.0.1:3308/misc?useUnicode=true&amp;characterEncoding=UTF-8"/>
  5.     <propertyname="username"value="misc_root"/>
  6.     <propertyname="password"value="misc_root_pwd"/>
  7.     <propertyname="poolPreparedStatements"value="true"/>
  8. <property name="maxActive" value="200"/>
  9. </bean>


其實這就是一個Spring的Bean的配置,注意id與上面的保持一致;

拷貝mysql 資料庫驅動mysql-connector-java-5.1.13-bin.jar和DBCP jar commons-dbcp-1.2.2.jar到activeMQ的classpath路徑下。。。


四、檢視MySQL資料表
重新啟動AMQ,啟動完成之後,我們發現,misc資料庫多了3張資料表

Sql程式碼  收藏程式碼
  1. mysql> SHOW tables;  
  2. +----------------+
  3. | Tables_in_misc |  
  4. +----------------+
  5. | activemq_acks  |  
  6. | activemq_lock  |  
  7. activemq_msgs  |  
  8. +----------------+

啟動的log 資訊如下

C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin>activemq.bat
Java Runtime: Sun Microsystems Inc. 1.6.0_16 C:\Java\jdk1.6.0_16\jre
  Heap sizes: current=5056k  free=4635k  max=520256k
    JVM args: -Dcom.sun.management.jmxremote -Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=true -Djava.util.logging.config.file=logging.properties -
Dactivemq.classpath=C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\../conf;C:\Documents and Settings\joh
nson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\../conf; -Dactivemq.home=C:\Documents and Settings\johnson yang\Desktop\apache-activem
q-5.5.0-bin\apache-activemq-5.5.0\bin\.. -Dactivemq.base=C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\
..
ACTIVEMQ_HOME: C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\..
ACTIVEMQ_BASE: C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\..
Loading message broker from: xbean:activemq.xml
 INFO | Refreshing [email protected]: startup date [Tue Aug 02 15:18:45 CST 2011]; root of context hierarchy
 WARN | destroyApplicationContextOnStop parameter is deprecated, please use shutdown hooks instead
 INFO | PListStore:C:\Documents and Settings\johnson yang\Desktop\apache-activemq-5.5.0-bin\apache-activemq-5.5.0\bin\..\data\localhost\tmp_storage started
INFO | Using Persistence Adapter: JDBCPersistenceAdapter(org.apache.commons.dbcp.BasicDataSource@10a5c21)
 INFO | Database adapter driver override recognized for : [mysql-ab_jdbc_driver] - adapter: class org.apache.activemq.store.jdbc.adapter.MySqlJDBCAdapter
 INFO | Database lock driver override not found for : [mysql-ab_jdbc_driver].  Will use default implementation.

 INFO | Attempting to acquire the exclusive lock to become the Master broker
 INFO | Becoming the master on dataSource: [email protected]
 INFO | ActiveMQ 5.5.0 JMS Message Broker (localhost) is starting
 INFO | For help or more information please see: http://activemq.apache.org/
 INFO | Listening for connections at: tcp://sha-lri-pc-085:61618
 INFO | Connector openwire Started
 INFO | ActiveMQ JMS Message Broker (localhost, ID:sha-lri-pc-085-1402-1312269539231-0:1) started
 INFO | jetty-7.1.6.v20100715
 INFO | ActiveMQ WebConsole initialized.
 INFO | Initializing Spring FrameworkServlet 'dispatcher'
 INFO | ActiveMQ Console at http://0.0.0.0:8161/admin
 INFO | Initializing Spring root WebApplicationContext
 INFO | OSGi environment not detected.
 INFO | Apache Camel 2.7.0 (CamelContext: camel) is starting
 INFO | JMX enabled. Using ManagedManagementStrategy.
 INFO | Found 5 packages with 16 @Converter classes to load
 INFO | Loaded 152 type converters in 0.719 seconds
 INFO | Connector vm://localhost Started
 INFO | Route: route1 started and consuming from: Endpoint[activemq://example.A]
 INFO | Total 1 routes, of which 1 is started.
 INFO | Apache Camel 2.7.0 (CamelContext: camel) started in 2.422 seconds
 INFO | Camel Console at http://0.0.0.0:8161/camel
 INFO | ActiveMQ Web Demos at http://0.0.0.0:8161/demo
 INFO | RESTful file access application at http://0.0.0.0:8161/fileserver
 INFO | Started [email protected]:8161


資料表activemq_msgs即為持久化訊息表;

五、持久化訊息
系統啟動完畢之後,訊息表中內容為空:

Sql程式碼 收藏程式碼
  1. mysql> SELECT * FROM activemq_msgs;  
  2. Empty set
Sql程式碼  收藏程式碼
  1. mysql> SELECT * FROM activemq_msgs;  
  2. +----+-----------------+--------------------------------------------+-----------+------------+-----+----------+
  3. | ID | CONTAINER       | MSGID_PROD                                 | MSGID_SEQ | EXPIRATION | MSG | PRIORITY |  
  4. +----+-----------------+--------------------------------------------+-----------+------------+-----+----------+
  5. |  1 | queue://FOO.BAR | ID:SHI-AP33382A-1486-1309840138441-2:2:1:1 |         1 |          0 | |        5 (優先順序是五,就是優先順序是高的。。實際生產中要重新設定)|  
  6. +----+-----------------+--------------------------------------------+-----------+------------+-----+----------+
Sql程式碼  收藏程式碼
  1. mysql> SELECT * FROM activemq_msgs;  
  2. Empty set


5、我們可以生產多條訊息,然後一條一條的消費,發現訊息表中的訊息一條一條的減少;
6、在傳送訊息頁面,“Destination Type”如果選擇“Topic”的話,則訊息表中並沒有資料,原因在於“Queue”為ptp模式訊息,“Topic”為釋出/訂閱模式訊息,當沒有訂閱者時,訊息直接丟掉了。



相關推薦

JMS學習筆記6

2、解壓apache-activemq-5.5.0-bin.zip檔案到檔案系統(比如D:\ActiveMQ-5.5.0); 3、執行bin/activemq.bat指令碼即可啟動AMQ: Java程式碼   INFO | ActiveMQ 5.5.0 JMS Message Broker (

ThinkPHP5學習筆記(6)請求和響應

thinkphp在線視頻課程:http://www.kancloud.cn/tpshop/thinkphp5/220692Request請求對象和Response響應對象$_GET、$_POST、$_REQUEST、$_COOKIE調用請求對象$request=Request::instance()$this

[javase學習筆記]-6.5 類類型參數與匿名對象

需要 public num trac article 我們 品牌 類類型 color 這一節我們來說說類類型參數和匿名對象. 我們繼續用之前的小汽車類吧 class Car { int num;//這是輪胎數屬性 String color;//這是顏色屬性

ESP8266學習筆記6:ESP8266規範wifi連接操作

.text n) 梳理 pri his tail 周期性 官方 esp 一、前言 我整理了從2015年至今關於ESP8266的學習筆記,梳理出來了開發環境、基礎功能、進階學習三大部分。方便自己和他人。可點此查看,歡迎交流。 之前在筆記4《ES

[javase學習筆記]-6.6 基本數據類型參數與引用數據類型參數的傳遞過程

img 兩個 數據類型 語句 hang .net 全部 pre 進棧 這一節基本數據類型參數和引用數據類型參數的傳遞過程。 數據類型參數和引用參數我們在前面章節中都已涉及到了,那麽我們來看看以下的兩段代碼: //基本數據類型參數傳遞 class Demo

java學習筆記(6)

brush 本質 運行 == scanner 私有 定義 bool 調用 java基礎知識: 1:形式參數和返回值的問題 (1)形式參數: 類名:需要該類的對象 抽象類名:需要該類的子類對象 接口名:需要該接口的實現類對象 (2)返回值類型: 類名:返

40、我的C#學習筆記6

c#表達式:表達式是由運算符和操作數組成的。運算符設置對操作數進行什麽樣的運算。例如:+、-、*、/都是運算符,操作數包括文本、常量、變量和表達式。運算符:運算符是一些特殊的符號,主要用於數學函數、一些類型的賦值語句和邏輯比較方面。C#中提供了豐富的運算符,如:算術運算符、賦值運算符、比較運算符等。算術運算符

《Unix&Linux大小教程》學習筆記6——Unix文件系統

文件類型 src pos strong ron 輸出 lin post 二進制文件 1:Unix文件類型——3種 普通文件(常規文件):文本文件(純文本、腳本、源程序、配置文件、html等)、二進制文件(多媒體文件、數據庫等) 目錄:用於組織文件 偽文件:不存儲數據,目的是

Java學習筆記6(循環和數組練習題)

rgs per spa 練習 折半查找法 選擇排序 d+ sele system 1.輸出100到1000的水仙花數: public class LoopTest{ public static void main(String[] args){ i

hibernate框架學習筆記6:事務

isolation -c blog 重復 .config rollback pre ont .com MySQL的事務、JDBC事務操作: 詳細見這篇文章:比較詳細 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hi

struts2框架學習筆記6:攔截器

筆記 頁面 actions err tor 框架 map 異常 protect 攔截器是Struts2實現功能的核心部分 攔截器的創建: 第一種: package interceptor; import com.opensymphony.xwork2.ActionI

學習筆記(6)

學習筆記1.fgrep 不支持正則表達式搜索2.grep abc 接受標準輸入,表示可以接受管道來對輸出進行處理3.grep [file] file可有可無 可以沒有文件意味著接受標準輸入 Usage: grep [OPTION]... PATTERN [FILE]... Usage: cat [O

[javase學習筆記]-6.4 成員變量與局部變量

ava 包含成員 -m img 不同之處 棧內存 RM 代碼塊 pub 前面我們學習了類的定義,我們不難理解,定義類事實上就是在定義類中的成員. 成員包含成員變量和

設計模式:學習筆記(6)——抽象工廠模式

方法 組成 pat AR ID 指定 ride 抽象工廠模式 nds 設計模式:學習筆記(6)——抽象工廠模式 快速開始 介紹   抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計

Python+Selenium學習筆記6 - os模塊

瀏覽器 htm abs sel case 打開 結果 關於 導入 os模塊是關於文件/目錄方面的 導入語法 import os 相關方法 path.abspath() 用來獲取當前路徑下的文件 os.path.abspath(‘checkbox.html‘)

Linux學習筆記6月1日任務

onf 告警系統需求分析 grep images AC shell中的 alt tle process 20.16/20.17 shell中的函數$1為第一個參數的值;$2為第二個參數的值;$0為腳本名;$#為參數個數;獲取主機IP地址命令,#ifconfig | grep

Linux學習筆記6月4日任務

系統 TP space TE AR linux學習 editor proc 項目 20.20 告警系統主腳本20.21 告警系統配置文件20.22 告警系統監控項目Linux學習筆記6月4日任務

Linux學習筆記6月5日任務

space Edito theme ces src efault linux學習筆記 TE -o 20.23/20.24/20.25 告警系統郵件引擎20.26 運行告警系統#cd /usr/local/sbin/mon/bin#sh main.shLinux學習筆記6月5

Linux學習筆記6月8日任務

.html linux學習 In 擴展 ML ID 學習 http 復習 復習shell腳本擴展:給你提供一本電子書 鏈接:http://pan.baidu.com/s/1mg49Taw 密碼:yk4bshell習題做一下 http://www.apelearn.com/s

node學習筆記6——自定義模塊

例子 學習筆記 log 2個 模塊 而且 nodejs 說明 分享 自定義模塊三大關鍵詞: require——引入模塊; exports——單個輸出; module——批量輸出。 從例子下手: 1.創建module.js: exports.a=22; exports.