將WBE與WebSphere Message Broker 一起使用

CloudSpace發表於2009-07-30

Xiaoming Zhang, 軟體工程師, IBM

引言

本系列的第 1 部分向您介紹了整個系列中使用的交易系統場景。在第 2 部分中,您構建並測試了該交易系統應用程式。在第 3 部分中,您將瞭解如何使用該交易系統場景作為示例,將 WebSphere Message Broker(以下稱為 Message Broker)整合到業務事件處理解決方案中。

將 Message Broker 與 WebSphere Business Events(以下稱為 Business Events)整合的優點是什麼呢?Message Broker 提供了用於業務應用程式整合和訊息轉換的智慧 SOA 方法。但是,業務經常還需要業務事件處理。例如,儘管整合的應用程式可以通過 Message Broker 自由地彼此傳送訊息,但是您的業務還需要檢測複雜的訊息模式(例如,您的其中一個應用程式在一段時間內似乎不是活動的)。WebSphere Business Events(以下稱為 Business Events)可以檢測這樣的模式,自動生成訊息,並將訊息傳送到 Message Broker 以便能夠糾正該情況。





回頁首


整合場景

本文中使用的場景基於一個交易系統,其中有一個 Business Events 應用程式處理買入和賣出交易事件。如果同一個客戶在一小時內買入並賣出同一股票,則 Business Events 系統將生成一個 SellAfterBuy 操作。對於特定客戶在一天內執行的每三個 SellAfterBuy 操作,無論是對哪些股票執行的,都會生成一個 SpeculativeCustomer 操作。有關該場景的更多資訊,請參閱第 1 部分

在本文中,我們將使用您在第 2 部分中建立的交易系統應用程式,對其進行增強以包括與 Message Broker 的整合,並使用 Message Broker 接觸點傳送事件和使用操作。

圖 1 顯示了本文中描述的 Message Broker 和 Business Events 整合場景的大致體系結構:


圖 1. Message Broker 和 Business Events 整合體系結構
整合體系結構

在圖 1 中,該整合體系結構具有五個主要元件,其中三個元件包含在 WebSphere Message Broker“超級元件”中:

  • 交易系統客戶端負責向 Message Broker 傳送請求,並從 Message Broker 接收響應。就本文而言,我們將使用可在 IH03:WebSphere Message Broker V6-Message display, test & performance utilities 獲得的 rfhutil 實用工具來模擬該客戶端。
  • 在 Message Broker 中,事件/操作轉換負責在整個系統中通過中介傳遞訊息。此元件是本文的重點。Message Broker 從客戶端接收訊息,並將其轉發到 Business Events。它還從 Business Events 接收操作並將其轉發到客戶端。
  • Business Events 檢測何時發生了某個業務事件。
  • 在 Message Broker 中,交易系統處理客戶端傳送的交易。Message Broker 交易系統元件是交易處理系統的一個邏輯元件,這裡介紹它是出於完整性的考慮。其實現方式取決於具體的業務環境。由於本文重點研究如何將 Message Broker 與 Business Events 整合,也就是如何將事件/操作轉換連線到 Business Events,因此該交易系統元件的詳細資訊就不在本文中進行討論了。
  • Message Broker 操作處理系統在 Business Events 已發起某個操作時執行業務流程。由於本文的重點不是業務處理功能,因此僅簡單研究從 Business Events 接收的操作,並根據接收到的操作的型別,將其傳遞到相關的 WebSphere MQ 佇列。

我們的整合場景遵循以下原則:

  • 與 Business Events 進行的所有通訊都是使用 Java Message Service (JMS) 訊息佇列執行的,這是 Message Broker 與 Business Events 建立連線的簡單方法。
  • 提交到 Business Events 的所有事件均由 Message Broker 中的一個訊息流處理。這樣可以實現特定代理訊息到 Business Events 所需的通用事件結構的轉換。
  • 類似地,Business Events 生成的任何操作均邏輯地流經 Message Broker 流,在流中可以進行從通用操作結構到操作處理系統可能需要的特定代理訊息的轉換。但是,本文中描述的流沒有實現此類轉換邏輯。

這些原則確保 Message Broker 超級元件和客戶端除了需要知道如何使用標準介面進行通訊以外,均不需要有關 Business Event 元件的任何特定知識,以便對 Business Event 元件實現的任何可能的改動不會影響 WebSphere Message Broker 超級元件。

您可以使用本文描述的過程從頭構建您自己的專案。該解決方案的 Message Broker 專案交換檔案和 Business Events 專案檔案包括在下載部分。您可以將這些檔案分別匯入 Message Broker Toolkit 和 Business Events。但是,您仍然需要完成配置 WebSphere MQ 部分中描述的手動配置。





回頁首


配置 WebSphere MQ

我們將使用 WebSphere MQ 作為 Message Broker 與 Business Events 之間的訊息以及 Message Broker 與交易系統客戶端之間的訊息的 JMS 提供者。在下面的部分中,您將配置 WebSphere MQ JMS 並建立必需的佇列管理器和佇列。

配置 JMS

JMS 佇列用於在 Message Broker 與 Business Events 之間傳遞訊息。要配置 WebSphere MQ JMS,請完成以下操作步驟:

  1. 編輯 WebSphere MQ 安裝的 Java\bin 目錄中的 WebSphere MQ JMSAdmin.config 檔案中的 INITIAL_CONTEXT_FACTORYPROVIDER_URL 條目。按如下所示更新這些條目:
    INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactor
    PROVIDER_URL=file:/C:/JNDI-Directory.
    

  2. 在您選擇的位置建立一個單獨的 WebSphere MQ 佇列連線工廠定義檔案,其中包含以下程式碼(假設佇列管理器名稱為 WBRK61_DEFAULT_QUEUE_MANAGER):
    # Define a QueueConnectionFactory
    # Only parameters being overridden from their default values are specified.
    # This sets up a MQ client binding.
    DEF QCF(qcf1) +
    TRANSPORT(CLIENT) +
    QMANAGER(WBRK61_DEFAULT_QUEUE_MANAGER) +
    HOSTNAME(127.0.0.1)+
    PORT(2414)
    
    #
    DEF Q(wbe_input_queue) +
    QUEUE(WBE_INPUT_QUEUE) +
    QMANAGER(WBRK61_DEFAULT_QUEUE_MANAGER)
    
    #
    DEF Q(wbe_output_queue) +
    QUEUE(WBE_OUTPUT_QUEUE) +
    QMANAGER(WBRK61_DEFAULT_QUEUE_MANAGER)
    
    #
    DEF Q(wbe_backout_queue) +
    QUEUE(WBE_BACKOUT_QUEUE) +
    QMANAGER(WBRK61_DEFAULT_QUEUE_MANAGER)
    END
    

    此檔案宣告該佇列連線工廠名稱為 qcf1,並指定了三個 JMS 佇列:wbe_input_queuewbe_output_queuewbe_backout_queue。對應的 WebSphere MQ 佇列分別為 WBE_INPUT_QUEUEWBE_OUTPUT_QUEUEWBE_BACKOUT_QUEUE。Message Broker 輸出流(將在稍後描述)中的 JMSInput 節點需要 wbe_backout_queue,用於該流在無法成功處理訊息時所撤銷的訊息。

  3. 建立名為 C:/JNDI-Directory 的檔案目錄。
  4. 通過輸入以下內容,使用您建立的佇列連線工廠定義檔案執行 WebSphere MQ jmsadmin 命令:
    jmsadmin < your_definition_file

    ,這將在 C:/JNDI-Directory 目錄中建立 .bindings 檔案。

建立 WebSphere MQ 佇列管理器和佇列

使用 WebSphere MQ Explorer 建立一個 WebSphere MQ 佇列管理器。如果您使用任何現有的 MQ 佇列管理器,例如可能在安裝 Message Broker 時已經為您建立的 WBRK61_DEFAULT_QUEUE_MANAGER,則可以跳過此步驟。否則,請啟動 WebSphere MQ Explorer 並右鍵單擊 Queue Managers,然後單擊 New => Queue Manager 建立新的佇列管理器。

如果您使用 WBRK61_DEFAULT_QUEUE_MANAGER,則應該看到如圖 2 所示的佇列。


圖 2. WBRK61_DEFAULT_QUEUE_MANAGER 佇列
WBRK61_DEFAULT_QUEUE_MANAGER 佇列

如果您是建立新的佇列管理器,則需要自己建立以下佇列:

  • WBE_INPUT_QUEUE
  • WBE_OUTPUT_QUEUE
  • WBE_BACKOUT_QUEUE
  • wmb_input_queue
  • wmb_unknown_message_type_queue
  • wmb_buy_ack_queue
  • wmb_sell_after_buy_queue
  • wmb_speculative_customer_queue
  • wmb_unknowns_queue

例如,要建立 WBE_INPUT_QUEUE,請右鍵單擊 WBRK61_DEFAULT_QUEUE_MANAGER 下面的 Queues,並選擇 New => Local Queue





回頁首


開發 Message Broker 流

Business Events 要求輸入事件和出站操作物件符合一般 XML 格式,如下所述:

  • connector 是頂級 XML 元素,它提供諸如聯結器名稱和提交時間戳等資訊。connector 元素可以包括一個 connector-bundle 子元素。
  • connector-bundle 對應於一個操作或事件。目前,一個聯結器訊息只能包含一個事件或操作。但是,一個事件或操作可以包含一個或多個事件或操作物件;這些物件在模型中表示為 connector-objects
  • 一個 connector-object 對映到一個事件或操作物件。它包括物件的名稱和欄位的陣列。
  • fieldsconnector-object 中的一系列鍵值對。

您開發的 Message Broker 流需要使用如下事件訊息示例所示的訊息格式與 Business Events 互動:


	
		
			
				String_CustomerID
			
			
				StockA
			
			
				2008-04-10T14:01:55Z
			
			
				9.9
			
			
				9.9
			
		
	

	

開發輸入流

圖 3 演示了該輸入流,其中使用了 MQInput 節點來從 MQ 佇列讀取 MQ 訊息。輸入訊息被傳遞到 TradeFilter 節點以檢查輸入訊息是否屬於某些型別,這些型別指示是否應該將輸入訊息作為事件傳遞給 Business Events。如果是,則將訊息傳遞給 CreateEvent 節點,後者將訊息轉換為 Business Events 能夠接受的格式。然後 MQJMSTransform. 將轉換後的訊息從 MQ 訊息轉換為可由 Business Events 讀取的 JMS 訊息。然後 JMSOutput 節點將 JMS 訊息(現在是 Business Events 事件)傳送到 Business Events。為簡單起見,無關的訊息將傳送到 UnknownMessageTypeNode 節點,後者將訊息儲存在某個 MQ 佇列中。


圖 3. Message Broker 輸入流
輸入流

完成以下步驟建立如圖 3 所示的訊息流:

  1. 在 Message Broker Toolkit Broker Application Development 檢視中,如圖 4 所示,通過選擇 File => New => Message Flow Project 建立一個訊息流專案,併為其指定您選擇的名稱。

    圖 4. Message Broker Toolkit Application Development 檢視
    Application Development 檢視

  2. 通過右鍵單擊該新專案並選擇 New => Message Flow 建立新的訊息流。將該流命名為 input
  3. 將一個 MQInput 節點從皮膚中的 WebSphere MQ 抽屜拖放到開發畫布上。
  4. 單擊該節點並在 Properties 選項卡的 Basic 資料夾中指定 in 作為該節點的 Queue name 屬性。在 Input Message Parsing 資料夾中為 Message domain 屬性分配值 XMLNS

    輸入訊息的正文預期應該具有根元素 ,此根元素包含五個子元素:。下面是這樣的輸入訊息的示例:

    
    	Buy
    	String_CustomerID
    	StockA
    	9.9
    	9.9
    
    

    元素的有效值為 BuySell。我們將在稍後的階段中建立 BuySell 訊息。

  5. 將一個 Filter 節點從 Routing 抽屜拖放到畫布上,並將其重新命名為 TradeFilter。TradeFilter 節點將 BuySell 型別的訊息路由到 True 終端,並將所有其他訊息路由到 False 終端。
  6. 雙擊 TradeFilter 節點並按如下方式定義 Function Main()
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    	DECLARE myref REFERENCE TO Body.Trade.Type;
    	RETURN (myref='Buy') OR (myref='Sell');
    END;
    

  7. 將一個 Compute 節點從 Transformation 抽屜拖放到畫布上,並將其重新命名為 CreateEvent。CreateEvent 節點使用 ESLQ 語言將有效的輸入訊息轉換為 Business Events 所需的事件訊息格式。
  8. 雙擊 CreateEvent 節點並按如下方式定義其 Main ESQL 函式:
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    	CALL CopyMessageHeaders();
    	-- create 
    	SET OutputRoot.XML.connector.(XML.Attribute)name = 'Trade System';		
    	SET OutputRoot.XML.connector.(XML.Attribute)version = '2.2';
    	-- create 
    	SET OutputRoot.XML.connector."connector-bundle".(XML.Attribute)name 
    = CAST (InputRoot.XML.Trade.Type AS CHARACTER);		
    	SET OutputRoot.XML.connector."connector-bundle".(XML.Attribute)type 
    = 'event';
    	-- create 
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    (XML.Attribute)name = 'TradeObject';
    	-- create "CustomerID" field
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[1] = InputRoot.XML.Trade.CustomerID;		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[1].(XML.Attribute)name = 'CustomerID';		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[1].(XML.Attribute)type = 'String';
    	-- create "StockID" field
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[2] = InputRoot.XML.Trade.StockID;		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[2].(XML.Attribute)name = 'StockID';		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[2].(XML.Attribute)type = 'String';
    	-- create "Date" field
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[3] = CAST (CURRENT_DATE AS CHARACTER FORMAT 'IU');
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[3].(XML.Attribute)name = 'Date';		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[3].(XML.Attribute)type = 'DateTime';		
    	-- create "Quantity" field
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[4] = InputRoot.XML.Trade.Quantity;		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[4].(XML.Attribute)name = 'Quantity';		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[4].(XML.Attribute)type = 'Real';
    	-- create "Price" field		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[5] = InputRoot.XML.Trade.Price;		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[5].(XML.Attribute)name = 'Price';		
    	SET OutputRoot.XML.connector."connector-bundle"."connector-object".
    field[5].(XML.Attribute)type = 'Real';
    		
    	RETURN TRUE;
    END;
    

  9. 將一個 MQJMSTransform. 節點從 JMS 抽屜拖放到畫布上。
  10. 將一個 MQOutput 節點從 WebSphere MQ 抽屜拖放到畫布上,並將其重新命名為 UnknownMessageTypeQ。單擊該節點並指定 wmb_unknown_message_type_queue 作為該節點的 Queue name 屬性。
  11. 將一個 JMSOutput 節點從 JMS 抽屜拖放到畫布上。為該節點的關聯屬性分配以下值:
    • 在 Basic 資料夾中,Destination queue = wbe_input_queue
    • 在 JMS Connection 資料夾中,JMS provider name = WebSphere MQ
    • 在 JMS Connection 資料夾中,Initial context factory = com.sun.jndi.fscontext.RefFSContextFactory
    • 在 JMS Connection 資料夾中,Location JNDI bindings 為: file:/C:\JNDI-Directory.
    • 在 JMS Connection 資料夾中,Connection factory name = qcf1
  12. 按如圖 3 所示連線您剛才建立的所有節點。

開發輸出流

圖 5 顯示了 Message Broker 輸出流。JMSInput 節點讀取 Business Events 生成的操作。JMSMQTransform. 節點將訊息轉換為 MQ 訊息。然後 RouteReply 節點將轉換後的訊息路由到其中一個適當的 MQOutput 節點。


圖 5. Message Broker 輸出流
輸出流

完成以下步驟建立如圖 5 所示的輸出訊息流:

  1. 建立一個新的訊息流並將其命名為 output
  2. 將一個 JMSInput 節點從 JMS 抽屜拖放到畫布上。為該節點的對應屬性分配以下值:
    • 在 Basic 資料夾中,Destination queue = wbe_output_queue
    • 在 JMS Connection 資料夾中,JMS provider name = Websphere MQ
    • 在 JMS Connection 資料夾中,Initial context factory = com.sun.jndi.fscontext.RefFSContextFactory
    • 在 JMS Connection 資料夾中,Location JNDI bindings = file:/C:\JNDI-Directory
    • 在 JMS Connection 資料夾中,Connection factory name = qcf1
  3. 將一個 Route 節點從 Routing 抽屜拖放到畫布上,並將其重新命名為 RouteReply。右鍵單擊 RouteReply 並選擇 Add Output Terminal 兩次,以便為該節點建立兩個額外的輸出終端。將兩個新的終端分別命名為 BuyAckSellAfterBuy,並將現有的 Match 終端重新命名為 SpeculativeCustomer
  4. 單擊 RouteReply 節點並配置 Filter table 屬性,如圖 6 所示。

    圖 6. RouteReply 節點的設定
    RouteReply 配置

    此配置導致將 Buy AckSellAfterBuySpeculativeCustomer 操作分別路由到 BuyAckSellAfterBuySpeculativeCustomer 輸出終端,並將所有其他訊息路由到 Default 終端。
  5. 配置四個 MQOutput 節點並將其分別命名為 UnknownsNodeBuyAckNodeSellAfterBuyNodeSpeculativeCustomerNode
  6. 將這四個節點的 Queue name 屬性分別設定為 wmb_unknowns_queuewmb_buy_ack_queuewmb_sell_after_buy_queuewmb_speculative_customer_queue
  7. 按如圖 3 所示將您剛才建立的所有節點連線在一起。Default、BuyAck、SellAfterBuy 和 SpeculativeCustomer 輸出終端分別連線到 UnknownsNode、BuyAckNode、SellAfterBuyNode 和 SpeculativeCustomerNode 節點。

指定訊息佇列連線聯結器引數

儘管我們是在使用第 2 部分中建立的 Business Events 應用程式,但是由於使用 Business Events 訊息佇列連線聯結器來連線到 Message Broker,您需要修改該應用程式的事件和操作的聯結器引數。為此,請完成以下操作步驟:

  1. 通過選擇“開始”=>“所有程式”=>“IBM WebSphere Business Events v6.1”=>“Design Data”啟動 Design Data 工具。
  2. 選擇 File => Open Project,然後指定專案檔名稱。
  3. 展開 Touchpoints 窗格,如圖 7 所示:

    圖 7. Touchpoints 窗格
    Touchpoints 窗格

  4. 對於 Trade System 接觸點中顯示的每個 Buy 和 Sell 事件,請完成以下操作步驟:
    1. 右鍵單擊事件並選擇 Event Properties
    2. 在 Connection 選項卡上,選擇 Message Queue Event Connection,然後單擊 Configure。注意:您可能需要首先簽出事件,然後才能對其進行編輯。
    3. 選擇 JMSQueue 作為 Queue Type,並指定 wbe_input_queue 作為 Queue Name
    4. 單擊 Provider 並執行以下操作步驟,如圖 8 所示:
      1. 選擇 com.sun.jndi.fscontext.RefFSContextFactory 作為 Context Factory Class
      2. 選擇 file:///C:/JNDI-Directory 作為 URL
      3. 選擇 qcf1 作為 Factory Name
      4. 單擊 OK

        圖 8. 配置事件的 JMS 佇列引數
        配置 JMS 佇列事件引數

    5. 單擊 OK 儲存聯結器配置。

完成以下步驟為 Trade System 接觸點中的 BuyAckSell After BuySpeculative Customer 操作配置連線:

  1. 右鍵單擊操作並選擇 Action Properties
  2. 在 Connection 選項卡上,選擇 Message Queue Event Connection,然後單擊 Configure。您可能需要首先簽出操作,然後才能對其進行編輯。
  3. 選擇 JMSQueue 作為 Queue Type,並指定 wbe_output_queue 作為 Queue Name
  4. 單擊 Provider 並執行以下操作步驟,如圖 9 所示:
    1. 選擇 com.sun.jndi.fscontext.RefFSContextFactory 作為 Context Factory Class
    2. 選擇 file:///C:/JNDI-Directory 作為 URL
    3. 選擇 qcf1 作為 Factory Name
    4. 單擊 OK

      圖 9. 配置操作的 JMS 佇列引數
      配置 JMS 佇列操作引數

  5. 單擊 OK 儲存聯結器配置。





回頁首


安裝和測試該整合

現在您需要測試已建立的 Message Broker 流。要測試流,請執行以下操作步驟:

  1. 按照第 2 部分中的說明部署和啟動 Business Events 專案。
  2. 啟動 WebSphere MQ。
  3. 如果您還沒有這樣做,可以使用以下命令建立 Message Broker 代理:
     
    mqsicreatebroker  -i  -a
     -q  -n 
                        

  4. 如果您還沒有這樣做,可以使用以下命令建立 Message Broker 配置管理器:
    mqsicreateconfigmgr  -i  
    -a  -q 
                        

  5. 使用以下命令啟動代理和配置管理器:SimpleJSFmqsistart
  6. 在 Message Broker Toolkit 中,通過右鍵單擊您在前面建立的新訊息流專案,並選擇 New => Message Broker Archive,從而建立一個新的 Message Broker BAR 檔案。為該 BAR 檔案指定所選擇的名稱。
  7. Prepare 窗格中,選擇兩個新的輸入和輸出訊息流,然後單擊 Build broker archive,如圖 10 所示。

    圖 10. 準備 Broker BAR 檔案
    準備存檔

  8. 切換到 Message Broker Toolkit Broker Administration 檢視,並通過選擇 File => New => Domain Connection 建立到您的配置管理器的域連線。
  9. 填入您的配置管理器的 Queue Manager NamePort 引數。
  10. 連線配置管理器以後,單擊 Next,然後單擊 Finish
  11. 通過將您剛才建立的 BAR 檔案拖放到代理的預設執行組,從而對其進行部署,如圖 11 所示。

    圖 11. 部署 BAR 檔案
    部署 BAR 檔案

  12. 使用文字編輯器建立一個表示 Buy 訊息的文字檔案並將其儲存在 c:\temp 中。例如:
    
    	Buy
    	String_CustomerID
    	StockA
    	9.9
    	9.9
    
                        

  13. 建立另一個表示 Sell 訊息的文字檔案並將其儲存在 c:\temp 中。例如:
    
    	Sell
    	String_CustomerID
    	StockA
    	9.9
    	9.9
    
                

  14. 使用 rfhutil 實用工具向您正在使用的佇列管理器(例如 WBRK61_DEFAULT_QUEUE_MANAGER)上的 wmb_input_queue 傳送 Buy 或 Sell 訊息。為實現此目的,您可以通過單擊 Read File 按鈕讀取您剛才在 c:\temp 目錄中建立的 Buy 訊息。您可以通過單擊 rfhutil 實用工具上的 Data 選項卡檢視 Buy 訊息的內容,如圖 12 所示。

    圖 12. 檢視 Buy 訊息的內容
    檢視 Buy 訊息的內容

    然後單擊 Write Q 將該訊息傳送到 wmb_input_queue,如圖 13 所示。

    圖 13. 通過單擊 Write Q 按鈕傳送 Buy 訊息


    您應該看到 Business Events 流生成的操作訊息出現在其中一個佇列中(wmb_buy_ack_queuewmb_sell_after_buy_queuewmb_speculative_customer_queue),具體取決於操作的型別。
  15. 然後您可以使用 rfhutil 實用工具讀取佇列。例如,單擊 Read Q 以讀取 wmb_buy_ack_queue 中的訊息,如圖 14 所示:

    圖 14. 單擊 Read Q 讀取操作訊息


  16. 選擇 Data 選項卡檢視訊息的內容,如圖 15 所示:

    圖 15. Buy Ack 操作的內容


  17. 如果您緊跟在 Buy 訊息之後立即傳送 Sell 訊息,您應該在 wmb_sell_after_buy_queue 中看到一條訊息,表明發生了一個 Sell After Buy 事件。
  18. 如果您將在 Sell 訊息之後傳送 Buy 訊息的週期重複三次,您應該看到一條訊息儲存在 wmb_speculative_customer_queue 佇列中。





回頁首


替代的整合方法

為簡單起見,本文描述的解決方案使用 Business Events 內建的訊息佇列連線聯結器來連線到 Message Broker 和 Business Events。這意味著將 Message Broker JMS 訊息放在作為 Message Broker 和 Business Events 中介的 JMS 佇列中,並從中讀取訊息。就效能而言,這不是最佳的解決方案,因為中間的訊息佇列連線聯結器引入了額外的訊息開銷。這是因為事件訊息由訊息佇列連線聯結器轉發到 Business Events 引擎,而不是直接傳送到該引擎。

一種簡單的解決方案是配置 Message Broker 輸入流中的 JMSOutput 節點將事件直接傳送到 Message Broker jms/eventTopicjms/durableEventTopic 主題,並配置 Message Broker 輸出流中的 JMSInput 節點直接從 jms/actionTopicjms/durableActionTopic 接收 JMS 訊息。但是,這樣的配置當前不支援 Business Events ResultEvent,因此將把所有操作傳送到 JMSInput 節點。您還可以使用其他連線支援(例如 HTTP/SOAP/File)連線到其他 Business Events 內建聯結器。





回頁首


結束語

在本文中,您瞭解瞭如何快速配置 Message Broker 和 Business Events 以實現互操作性。我們使用了示例 Broker 訊息來描述如何為 Business Events 構造事件訊息並由 Broker 訊息流將其傳送到 Business Events,以及如何從 Business Events 接收操作訊息並由 Broker 訊息流對其進行處理。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-610858/,如需轉載,請註明出處,否則將追究法律責任。

相關文章