各位高手,請幫忙指教,我第一次接觸MQ,小白一枚。
客戶要求這樣的一個方案:
A系統 MQserver1 MQserver2 B系統
這兩個系統之間發送訊息一定要求通過中間的兩臺安裝了MQ的服務器進行轉發。
那我目前的根據B系統所屬的客戶提供的一些資料來設計我方A系統和MQserver1的內容。
目前我是這樣設計的:
A系統中的應用要發一條訊息給B系統:
在MQserver1新建一個佇列管理器:QM1
再建立遠程佇列REMQ1
建立本地佇列LOCQ1
建立傳輸佇列TranQ1
建立死信佇列DeadQ1
建立傳輸通道MQ1.MQ2
那訊息的流程是否是這樣呢?
A系統 直接將訊息放到遠程佇列REMQ1中;然后REMQ1將訊息放到傳輸佇列TranQ1中(這個具體怎么放呢?是MQ內部自帶程式寫好的么?);
再傳輸佇列通過通道MQ1.MQ2的發送通道發送給MQserver2的本地佇列呢?
然后如果是B系統給A系統發送訊息就是MQserver2的遠程佇列通過傳輸佇列、傳輸通道發送到MQserver1的本地佇列中,然后A系統直接從本地佇列中獲取就可以了呢?
問題:
1、我上面的設計方案對嗎?是否可以實作呢?
2、經過查看資料,還有一些別名佇列,那些佇列都一定要求有的嗎?
3、一個佇列管理器中應該有多少個傳輸佇列呢?是否一個傳輸佇列就夠了呢?按道理應該是,因為它只是作為一個中轉訊息的作用而已。
uj5u.com熱心網友回復:
為啥沒人關注呢?uj5u.com熱心網友回復:
我通俗的描述一下哈,java的訊息的傳遞程序:
訊息在A系統(10.10.10.1)進行組裝(xml、json等等),通過IBM提供的jar包中的物件比如(MQEnvironment、MQQueueManager)將訊息按照MQserver1(10.10.10.2)配置的服務器連接通道commit到 MQserver1(10.10.10.2)的佇列管理器的遠程佇列定義配置的傳輸佇列中,此佇列管理器的遠程佇列定義還配置有遠程佇列管理器和遠程佇列(另一臺MQserver的,也就分別是MQserver2【10.10.10.3】的佇列管理器和MQserver2的佇列管理器的本地佇列)。
若 MQserver1(10.10.10.2)和MQserver2【10.10.10.3】能ping通并且MQ服務都是啟動的,訊息會從MQserver1(10.10.10.2)的傳輸佇列傳遞到MQserver2【10.10.10.3】的本地佇列;否則訊息在 MQserver1(10.10.10.2)的傳輸佇列中積壓。
訊息到達MQserver2【10.10.10.3】的本地佇列后,B系統(10.10.10.4)就可以通過IBM提供的jar包中的物件比如(MQEnvironment、MQQueueManager)將訊息從MQserver2【10.10.10.3】的本地佇列中取出(get),取一條本地佇列就少一條。完了。
訊息會從MQserver1(10.10.10.2)的傳輸佇列傳遞到MQserver2【10.10.10.3】的本地佇列需要在MQserver1(10.10.10.2)配置發送方通道,發送方通道中配置有傳輸佇列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/26763.html
標籤:WebSphere
