jms集群的意義在於提公升系統在處理訊息時的併發能力,建立這樣的集群,有三個步驟:
1.配置jms訊息持久化所使用的資料庫
2.配置分布式的jndi環境
3.配置分布式jms集群
在jboss集群中,系統採用hibernate的方式來儲存訊息,所以能夠相容hibernate支援的所有資料庫。jboss預設採用 hsql,在我們的例子中,將使用oracle 9.2。首先需要配置連線到資料庫的jndi資料來源。方法是把doc/examples/jca下的 oracle-ds.xml檔案拷貝到server/all/farm下,並且修改其中的引數,保證資料庫能夠正確連線。jboss集群啟動後,該檔案能夠通過jboss的farm服務,自動拷貝到其他集群節點,並且自動部署。假設jndi資料來源的名稱為:globalds將 doc/examples/jms下的oracle-jdbc3-service.xml檔案拷貝到server/all/deploy- hasingleton/jms目錄下,並且刪除該目錄下的hsqldb-jdbc2-service.xml。修改oracle-jdbc3- service.xml,在56行左右指定name的值為資料來源的名字:globalds。這樣系統會使用該資料來源來儲存jms訊息。使用如下命令啟動 boss: run ?c all.啟動完成後,正常情況下會發現oracle資料庫中多出了三張表:
1、jms_message_log 該錶用於儲存所有未處理的點對點訊息,表結構是:
messageid 訊息id
destination 目的地
txid 事務id
txop 訊息操作型別(a為新增,d為刪除)
messageblob 訊息內容
2、jms_reference_log 用於儲存所有未處理的topic訊息,表結構是:
messageid
destination
txid
txop
messageblob
redelivered 訊息是否被重發
3、jms_transaction_log 用於儲存處理訊息過程中的一些重要的事務
分布式的jndi有的節點有主次的區別,第乙個啟動的jboss是主伺服器,它會儲存所有的全域性 jndi,其他的節點如果收到客戶查詢jndi的請求後,都會向主伺服器請求資料。如果主伺服器不幸down掉,那麼次節點會發現這個變化,然後啟動自己的jndi環境,取代主伺服器提供服務。
下面是配置jms集群的jndi,開啟server/all/deploy-hasingleton/jms下的jbossmq-destinations-service.xml檔案,增加乙個名為test的destination,如下:
<mbean
code="org.jboss.mq.server.jmx.queue"
name
="jboss.mq.destination:service=queue,name=test"
>
<
depends
optional-attribute-name
="destinationmanager"
>
jboss.mq:service
=destinationmanager
depends
>
mbean
>
為了預防主伺服器down了之後丟失該jndi,所以最好在每個節點都進行這個配置。
public class testjmsbeanimplements messagedrivenbean, messagelistener
public void ejbremove()
public void onmessage(message msg) catch(exception e)
}
public void setmessagedrivencontext(messagedrivencontext
messagedrivencontext)
}
jms訊息構成
jms訊息主要分為三個部分 color red 分別為頭部 headers color 頭部提供訊息的元資料 主要是對訊息的一些控制資訊 可以被客戶端和jms提供者來使用 控制資訊例如 b jmscorrelationid jmscorrelationidasbytes jmsdeliverymod...
JMS訊息服務分類
訊息服務的分類 jms提供了兩種型別的訊息服務 1 點對點訊息處理 point to point,ptp 2 發布 訂閱訊息服務 public subscribe pub sub 點對點訊息模型通過乙個訊息佇列實現,訊息的生產者向佇列寫入訊息,訊息的消費者從佇列中讀取訊息。發布 訂閱訊息模型把訊息傳...
jms 訊息儲存機制
conf activemq.xml配置檔案裡新增上如下配置 熟悉說明 property name default value comments directory activemq data 儲存訊息檔案和日誌的目錄 usenio true 使用 nio 特性 synconwrite false 同...