HornetQ學習系列(3)

今天看下如何使用HornetQ,主要包括如何啓動,停止HornetQ服務以及如何配置一些參數。


問題1: HornetQ服務怎麼啓動和停止?



HornetQ的目錄結構如下,在bin目錄下有run.bat(Windows),run.sh(Linux)啓動服務,stop.bat(Windows),stop.sh(Linux)停止服務


出於好奇,我們就打開run.sh看看裏面都設置了哪些東東。

主要設置了日誌目錄,CLASSPATH,$CONFIG_DIR,JVM等一些參數,並且在默認條件下啓動腳本讀取的是config/stand-alone/non-clustered目錄下的配置文件

// run.sh


問題2:HornetQ有哪幾種配置方式?



有4種配置方式,它們分別是:

  • 非集羣方式的獨立服務器配置

  • 集羣方式的獨立服務器配置

  • 非集羣方式運行於JBoss應用服務器

  • 集羣方式運行於JBoss應用服務器

config目錄下可以看到不同方式的配置文件

1)獨立部署的集羣和非集羣配置目錄

2)應用於Jboss服務器的集羣和非集羣配置目錄


問題3:各個配置文件作用都是什麼?



每種配置方式都包含hornetq-beans.xml/hornetq-configuration.xml/hornetq-jms.xml等幾個配置文件,我們就以standalone-non-culstered方式爲例,來看看各個配置文件都是配置什麼的,作用是什麼?

1)hornetq-beans.xml 

note:如果是運行在JBoss應用服務器內,則爲 hornetq-jboss-beans.xml

這裏面定義了HornetQ中用到的各個bean,以及各個bean之間的依賴關係,這些bean被Jboss Microcontainer裝載和運行。

以下內容引用自HornetQ 2.1用戶手冊

  • JNDIServer

    很多客戶端需要JNDI來獲取JMS的對象,因此我們提供了一個JNDI服務來滿足它們。如果不需要JNDI,可以在配置 文件中將它們註釋掉。

  • MBeanServer

    這個對象提供了JMX管理接口。它是一個MBean服務器,可管理的對象可以註冊到這個服務器上。 通常這就是一個JVM內部的默認的平臺MBean服務器。如果不需要些服務,可以在配置文件中將其註釋或刪除。

  • Configuration

    這是HornetQ的Configuration對象。默認時它是一個FileConfiguration對象。它可以從文件系統中讀取 配置信息。有些情況下(如嵌入式HornetQ)你可以將它定義爲其它對象,以便用其它方法獲得配置信息。

  • Security Manager. 可配置的安全管理器。默認的安全管理器使用 hornetq-users.xml 文件中的配置信息。 它也可以配置爲一個JAAS的安全管理器。當HornetQ運行於JBoss應用服務器中時,它還可以配置爲JBoss的安全管理器,以達到更緊密的集成。 如果不需要安全管理,你也可以將它刪除。

  • HornetQServer

    這是HornetQ的核心服務對象,幾乎所有的核心功能都在這裏。

  • JMSServerManager

    這個對象將hornetq-jms.xml文件中定義的JMS的對象進行部署,比如JMS Queues, Topics 以及ConnectionFactory。它還提供一套簡單的管理接口以方便地對這些JMS對象進行管理。通常它只是將工作代理給 核心服務器。如果你不需要在服務器端進行JMS對象的部署與管理,可以將它從配置中去掉。

2)hornetq-configuration.xml

這個文件主要針對HornetQ做配置的。包括隊列大小,隊列滿時應採用的策略等等。

以下內容引用自HornetQ 2.1用戶手冊

名稱 類型 說明 默認值
backup Boolean true表示本服務器是集羣中另一個服務器的備份服務器 false
backup-connector-ref String 用於連接備份服務器的連接器
bindings-directory String 保存持久綁定的目錄the directory to store the persisted bindings to data/bindings
clustered Boolean true表示服務器是集羣中的節點 false
connection-ttl-override Long 表示在接收到一個ping之前連接保持有效的時間(單位毫秒) -1
create-bindings-dir Boolean true表示服務器在啓動時創建綁定的目錄 true
create-journal-dir Boolean true表示創建日誌目錄 true
file-deployment-enabled Boolean true表示服務器從配置文件中讀取配置 true
id-cache-size Integer 預先生成的消息id的緩存大小 2000
journal-buffer-size Long 日誌內部緩存的大小 128 KiB
journal-buffer-timeout Long T將日誌緩衝數據刷新的等待時間(納秒) 20000
journal-compact-min-files Integer 開始整理數據的最小數據文件數。 10
journal-compact-percentage Integer 開始壓縮日誌時的有效數據百分比。 30
journal-directory String 日誌文件所在的位置 data/journal
journal-file-size Long 每個日誌文件的大小(字節) 128 * 1024
journal-max-io Integer 某一時刻保存在AIO隊列中的最大寫請求數 500
journal-min-files Integer 預先創建的日誌文件數 2
journal-sync-transactional Boolean 如果是true,等事務數據同步到日誌後再向客戶端返回 true
journal-sync-non-transactional Boolean 如果是true,等非事務數據到日誌後再向客戶端返回 true
journal-type ASYNCIO|NIO 日誌存取的方式 ASYNCIO
jmx-management-enabled Boolean true表示通過JMX可以使用管理接口 true
jmx-domain String 用於HornetQ MBean註冊到MBeanServer的JMX域名 org.hornetq
large-messages-directory String 存放大消息的目錄 data/largemessages
management-address String 管理消息發送的地址 jms.queue.hornetq.management
cluster-user String 集羣連接的用戶名 HORNETQ.CLUSTER.ADMIN.USER
cluster-password String 集羣連接的用戶密碼 CHANGE ME!!
management-notification-address String 用於接收管理通知的地址 hornetq.notifications
message-counter-enabled Boolean true表示使用消息計數器 false
message-counter-max-day-history Integer 消息計數器歷史保存的天數 10
message-counter-sample-period Long 消息計數器取樣的間隔(毫秒) 10000
message-expiry-scan-period Long 過期消息掃描週期(毫秒) 30000
message-expiry-thread-priority Integer 過期消息線程的優先級 3
paging-directory String 分頁轉存消息的保存目錄 data/paging
persist-delivery-count-before-delivery Boolean true表示傳遞計數在傳遞之前保存。false表示只有當消息被取消時才保存。 false
persistence-enabled Boolean true表示服務器使用基於文件的日誌做持久化 true
persist-id-cache Boolean true表示id被保存到日誌中 true
scheduled-thread-pool-max-size Integer 可計劃線程池的線程數。 5
security-enabled Boolean true表示使用安全功能 true
security-invalidation-interval Long 安全緩存的有效時間(毫秒) 10000
thread-pool-max-size Integer 主線程池的線程數。-1表示數量不限 -1
async-connection-execution-enabled Boolean 接收的數據包是否由線程池的線程來處理 true
transaction-timeout Long 事務在建立後經過多長時間後可以從資源管理器(resource manager)刪除(毫秒) 60000
transaction-timeout-scan-period Long 掃描超時事務的間隔(毫秒) 1000
wild-card-routing-enabled Boolean true表示服務器支持通配符路由 true
memory-measure-interval Long 採樣JVM內存的週期(毫秒,-1表示不採樣) -1
memory-warning-threshold Integer 可用內存達到這個百分比時,給出警告信息 25
connectors Connector 連接器的配置
connector.name (attribute) String 連接器的名字-必需指定的參數
connector.factory-class String 連接工廠的實現類名-必需指定的參數
connector.param 連接器的配置參數 一個鍵-值對,表示一個連接器的參數配置。一個連接器可以有多個這樣的參數
connector.param.key (屬性) String 參數的鍵 - 必需指定的參數
connector.param.value (attribute) String 參數的值 - 必需指定的參數
acceptors Acceptor 一組接收器
acceptor.name (屬性) String 接收器的名字 - 可選
acceptor.factory-class String 接收器工廠實現類名 - 必需指定的參數
acceptor.param 一個接收器的配置參數 用來配置接收器的鍵-值對。一個接收器可以有多個參數。
acceptor.param.key (屬性) String 參數的鍵 - 必需指定的參數
acceptor.param.value (attribute) String 參數的值 - 必需指定的參數
broadcast-groups BroadcastGroup 一組廣播組
broadcast-group.name (attribute) String 廣播組的名字(必需是唯一的)- 必需指定的參數
broadcast-group.local-bind-address String 數據報文套接字的本地綁定地址 內系統內核選擇的IP地址
broadcast-group.local-bind-port Integer 數據報文套接字的本地綁定端口 -1 (匿名端口)
broadcast-group.group-address String 廣播地址 - 必需指定的參數
broadcast-group.group-port Integer 廣播使用的UDP端口 - 必需指定的參數
broadcast-group.broadcast-period Long 廣播的時間間隔(毫秒) 2000
broadcast-group.connector-ref 一個連接器對 廣播的一個連接器和一個可選的備份連接器。一個廣播組可以有多個這樣的連接器對
broadcast-group.connector-ref.connector-name (attribute) String 主連接器名 - 必需指定的參數
broadcast-group.connector-ref.backup-connector-name (attribute) String 備份連接器名 - 可選的參數
discovery-groups DiscoveryGroup 一組發現組
discovery-group.name (屬性) String 發現組的名字(具有唯一性) - 必需指定的參數
discovery-group.local-bind-address String 發現組所綁定的本地地址
discovery-group.group-address String 發現組監聽的廣播IP地址 - 必需指定的參數
discovery-group.group-port Integer 廣播組監聽的UDP端口 - 必需指定的參數
discovery-group.refresh-timeout Integer 發現組等待更新的時間。如果某個服務器上次廣播到達後經過這個時間後還沒有收到下次廣播,那麼 該服務器的連接器對將從列表中刪除 5000 (毫秒)
diverts Divert 一組轉發器
divert.name (attribute) String 轉發器的名字(必需是唯一的) - 必需指定的參數
divert.routing-name String 轉發器的路由名稱 - 必需指定的參數
divert.address String 轉發器的源地址 - 必需指定的參數
divert.forwarding-address String 轉發器的轉發地址 - 必需指定的參數
divert.exclusive Boolean 轉發器是否是唯一的 false
divert.filter String 可選的核心過濾器表達式 null
divert.transformer-class-name String 可選的轉換器的名字
queues Queue 一組預先配置的隊列
queues.name (屬性) String 隊列獨特的名字
queues.address String 隊列的地址 - 必需指定的參數
queues.filter String 隊列可選的核心過濾器表達式 null
queues.durable Boolean 是否持久隊列 true
bridges Bridge 一組橋
bridges.name (屬性) String 橋的獨特名字
bridges.queue-name String 橋接收消息的源隊列名 - 必需指定的參數
bridges.forwarding-address String 橋要轉發的地址。如果沒有指定則使用原始的地址 null
bridges.filter String 可選的核心過濾器表達式 null
bridges.transformer-class-name String 可選的轉換器類名 null
bridges.retry-interval Long 重試的時間間隔(毫秒) 2000 ms
bridges.retry-interval-multiplier Double 重試間隔的遞增係數 1.0
bridges.reconnect-attempts Integer 最大重試次數,-1代表無限次 -1
bridges.failover-on-server-shutdown Boolean 如果目標服務器正常關機是否仍進行失效備援 false
bridges.use-duplicate-detection Boolean 是否在轉發的消息中添加重複檢測的頭 true
bridges.discovery-group-ref String 橋使用的發現組名 null
bridges.connector-ref.connector-name (屬性) String 主連接的連接器名
bridges.connector-ref.backup-connector-name (屬性) String 備份連接的連接器名(可選) null
cluster-connections ClusterConnection 一組集羣連接
cluster-connections.name (attribute) String 集羣連接的獨特名字
cluster-connections.address String 集羣連接的地址名
cluster-connections.forward-when-no-consumers Boolean 如果目標沒有合適的接收者,是否仍然向它分配消息? false
cluster-connections.max-hops Integer 集羣拓撲中的最大跳數(hops) 1
cluster-connections.retry-interval Long 集羣連接重試的間隔(毫秒) 2000
cluster-connections.use-duplicate-detection Boolean 是否在轉發的消息中添加重複檢測的消息頭 true
cluster-connections.discovery-group-ref String 橋所使用的發現組的名字 null
cluster-connections.connector-ref.connector-name (屬性) String 主連接的連接器名字
cluster-connections.connector-ref.backup-connector-name (屬性) String 可選的備份連接所使用的連接器名字 null
security-settings SecuritySetting 一組安全設置
security-settings.match (屬性) String 安全所應用的地址匹配字符串
security-settings.permission 安全許可 地址的一個許可
security-settings.permission.type (attribute) 許可類型 許可的類型
security-settings.permission.roles (attribute) Roles 以逗號分隔的一組角色,這些角色將擁有相應的許可
address-settings AddressSetting 一組地址設置
address-settings.dead-letter-address String 死消息所發往的地址
address-settings.max-delivery-attempts Integer 發往死信地址之前所嘗試的傳遞次數 10
address-settings.expiry-address String 過期消息所發往的地址
address-settings.redelivery-delay Long 重新傳遞一個取消的消息前所等待的時間(毫秒) 0
address-settings.last-value-queue boolean 隊列是否是一個最新值隊列 false
address-settings.page-size-bytes Long 一個地址的分頁的大小(字節) 10 * 1024 * 1024
address-settings.max-size-bytes Long 地址的分頁轉存的最大值(字節) -1
address-settings.redistribution-delay Long 隊列最後一個接收者關閉後需要等待多長時間再將消息重新分配(毫秒) -1

3)hornetq-jms.xml

這個文件主要用來配置JMS服務的,內容包括JMS Queue, Topic和ConnectionFactory,這些配置會被部署到JNDI服務中。如果你不使用JMS,就不需要管這個文件了。

以下內容引用自HornetQ 2.1用戶手冊

名稱 類型 說明 默認值
connection-factory ConnectionFactory 一組註冊到JNDI的連接工廠
connection-factory.auto-group Boolean 是否自動使用消息組 false
connection-factory.connectors String 一組供連接工廠使用的連接器
connection-factory.connectors.connector-ref.connector-name (屬性) String 連接主服務器的連接器名
connection-factory.connectors.connector-ref.backup-connector-name (attribute) String 連接備份服務器的連接器名
connection-factory.discovery-group-ref.discovery-group-name (屬性) String 連接工廠的發現組名
connection-factory.discovery-initial-wait-timeout Long 發現組首次等待廣播的時間 10000
connection-factory.block-on-acknowledge Boolean 消息是否以同步方式通知 false
connection-factory.block-on-non-durable-send Boolean 是否以同步方式發送非持久消息 false
connection-factory.block-on-durable-send Boolean 是否以同步方式發送持久消息 true
connection-factory.call-timeout Long 遠程調用超時時間(毫秒) 30000
connection-factory.client-failure-check-period Long 客戶端如果在這個時間內沒有收到服務器數據包,將認爲連接出現故障。 5000
connection-factory.client-id String 連接工廠預先配置的客戶ID null
connection-factory.connection-load-balancing-policy-class-name String 負載均衡類名 org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy
connection-factory.connection-ttl Long 連接的存活時間(毫秒) 1 * 60000
connection-factory.consumer-max-rate Integer 接收者每秒鐘接收消息的最快速度 -1
connection-factory.consumer-window-size Integer 接收者流控制容器大小(字節) 1024 * 1024
connection-factory.dups-ok-batch-size Integer 在DUPS_OK_ACKNOWLEDGE模式下批量通知的大小(字節) 1024 * 1024
connection-factory.failover-on-initial-connection Boolean 如果首次連接主服務器失敗是否失效備援連接到備份服務器 false
connection-factory.failover-on-server-shutdown Boolean 在服務器停機時是否進行失效備援 false
connection-factory.min-large-message-size Integer 大消息的最小值,大小超過該值的按大消息處理 100 * 1024
connection-factory.cache-large-message-client Boolean true表示這個連接工廠會將大消息保存在臨時文件中 false
connection-factory.pre-acknowledge Boolean 是否在消息發送之前提前通知 false
connection-factory.producer-max-rate Integer 發送消息的最大速度 -1
connection-factory.producer-window-size Integer 發送者發送消息的窗口大小 1024 * 1024
connection-factory.confirmation-window-size Integer 會話恢復的確認窗口大小(字節) 1024 * 1024
connection-factory.reconnect-attempts Integer 重試的最大次數, -1 表示無限次 0
connection-factory.retry-interval Long 每次重試的時間間隔(毫秒) 2000
connection-factory.retry-interval-multiplier Double 重試間隔時間的遞增係數 1.0
connection-factory.max-retry-interval Integer 最大重試間隔。 2000
connection-factory.scheduled-thread-pool-max-size Integer 可計劃線程池的大小 5
connection-factory.thread-pool-max-size Integer 線程池大小 -1
connection-factory.transaction-batch-size Integer 使用事務性會話時發送通知的批量大小(字節) 1024 * 1024
connection-factory.use-global-pools Boolean 是否使用全局線程池 true
queue Queue 創建並註冊到JNDI的隊列
queue.name (屬性) String 隊列的唯一名字
queue.entry String 隊列的JNDI的上下文(context)。一個隊列可以有多個JNDI的上下文
queue.durable Boolean 是否持久隊列 true
queue.filter String 可選的隊列過濾器表達式
topic Topic 創建並註冊到JNDI的話題
topic.name (屬性) String 話題的唯一名
topic.entry String 話題的JNDI上下文(context)。一個話題可以有多個上下文。

4)hornetq-users.xml

這個文件主要配置HornetQ的用戶名、密碼和角色。

5)jndi.properties

這個是配置JNDI服務的

6)logging.properties

這是HornetQ自己獨立的日誌框架,不依賴其他框架


發佈了83 篇原創文章 · 獲贊 49 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章