引言
IBM® WebSphere® Business Integration Server Foundation V5.1.1 包括了可以創建、儲存并分發事件的公共事件基礎架構(CEI)。CEI 在通用業務事件(Common Business Event,CBE)中收到壓縮的系統或業務信息。當有重大事件發生的時候,利用發射器創建并將 CBE 發送到 CEI 服務器中,在此它可能被持久保存或被重新分發或兩種皆可。
您可以在新的事務或當前的用戶事務中,通過配置 CEI 啟用應用程序來同步或異步地向服務器發送事件。發射器可能與過濾器有關聯,以便只有包含專門信息的 CBEs 才能被發送到 CEI 中。用戶可以配置 CEI 服務器本身,以事件持久保存到數據庫中或/及分發它們到 JMS 隊列或主題中。
本文主要目的是概要性地介紹怎樣使用 WebSphere 管理控制臺為 CEI 提供配置選項。
公共事件基礎架構(CEI)概述
圖 1 提供了 CEI 的簡單概述。應用程序可被看作創建事件的事件源。這些應用程序在發送 CBE 到 CEI 服務器之前,它們會從 JNDI 中獲取發射器,并利用系統或業務信息來創建、組裝 CBE。本文并沒有專門描述如何獲得發射器或如何用數據組裝 CBE,而僅僅提供了對 CEI 概念性的概述。
CEI 服務器一旦收到 CBE,它就可能被持久保存或被分發。如果服務器的配置是分發事件,那么事件消費者應用程序可以監聽隊列或訂閱的主題來接收指定的事件信息。
配置公共事件基礎架構
本章節描述了如何利用管理控制臺配置 CEI 的簡單場景?!芭渲冒l射器”章節將示例如何創建同步、異步發射器和發射器如何過濾事件。本章節的最后部分重在事件分配并說明如何能合乎邏輯地將事件組合起來。
在本文中,我們假設已經安裝和配置了 CEI 來使用默認的 CEI 數據庫。為了簡單起見,本文將集中介紹怎樣在單個的 WebSphere 應用程序服務器上配置 CEI。
實例場景
CEI 可能從許多事件源中接收事件,但是本文僅僅考慮兩個。當有新命令產生時,第一個事件源發送事件到 CEI;而第二個事件源僅發送問題嚴重級別為 70 的事件。本文不是專門來介紹 CBE 可以包括的不同事件屬性和值,不過在這個場景中,"NewOrder" 及 "Severity=70" 將被用來表示兩個類型的事件。如果第二個事件用生成的 CBE 的問題嚴重級別不是 70,發射器將丟棄該事件,因此只有問題嚴重級別為 70 的 CBE 才會被發送到 CEI 服務器。
這里配置事件源 1 使用同步發射器來通過 EJB 界面發送事件,而事件源 2 利用異步發射器發送事件到 JMS 隊列。要獲得更多關于 EJB 和 JMS 的信息請參考本文最后的章節中的參考資料部分。
可以配置分發服務來把事件發送到多個隊列和主題中,不過在本文的場景中,來自事件源 1 的事件將被發送到 JMS 主題,而來自事件源 2 的事件將被發送到 JMS 隊列。圖 2 示例了即將使用的簡單場景。
配置公共事件基礎架構(CEI)服務器
在 WebSphere 管理控制臺中,可以通過選擇 Resources => Common Event Infrastructure Provider => Event Server Profile 來找到服務器的配置頁面。
事件服務器概要設置定義了 CEI 服務器的持久性和分發行為。在 WebSphere 安裝中創建了一個默認的事件服務器概要,如下面的圖 3 中所示。找到默認事件服務器概要,并確保已選擇了 Enable Event Distribution 和 Enable Data Store 的檢查框,以便持久性和分發都將發生。
在本場景中用到數據源的 JNDI 名稱符合 CEI 默認數據源定義。
配置發射器
事件源利用發射器發送 CBE 到 CEI 服務器,并且利用發射器工廠概要來配置發射器。在 WebSphere 管理控制臺中選擇 Resources => Common Event Infrastructure Provider => Emitter Factory Profile 來定位設置。對于應用程序服務器中配置的每一個發射器工廠概要,在服務器啟動時都會有一個 EmitterFactory 對象被綁定到 JNDI 上。事件源從 JNDI 中獲得 EmitterFactory 對象,并利用該對象來創建帶有指定行為的發射器。
圖 4 示例了發射器工廠概要使用的配置源。
通過選擇 Preferred Synchronization Mode 的復選框來配置發射器工廠概要同步或異步地發送事件。如果已經選擇了該復選框,那么傳輸的首選模式是同步的,并且 Synchronous Transmission Profile JNDI Name 需要使用 Event Bus Transmission Profile JNDI 名稱來指定。如果沒有使用發射器 API 覆蓋該設置,那么用該發射器工廠概要創建的發射器將通過 EJB 調用來同步地發送事件。
上面描述的兩種發射器工廠概要設置將在下面的兩個章節中進行介紹。
同步發射器
要配置同步發射器,需要在 WebSphere 管理控制臺中選擇 Resources => Common Event Infrastructure Provider => Emitter Factory Profile 來定位發射器工廠概要頁面。要創建一個新的發射器工廠概要,選擇 new 按鈕并輸入如下面表 1 所示的信息。
表 1:同步發射器的配置設定值
配置選項 | 配置值 |
Name | NewOrderEmitter |
JNDI 名稱 | com/ibm/events/configuration/emitter/NewOrderEmitter |
Synchronous Transmission Profile JNDI Name | com/ibm/events/configuration/bus-transmission/Default |
Preferred Synchronous Transmission Mode | Unchecked |
Filtering Enabled | Unchecked |
圖 5 展示了同步發射器工廠概要配置面板
同步傳輸概要 JNDI 名稱是事件總線傳輸概要資源的 JNDI 名稱。 WebSphere 安裝會自動配置一個默認事件總線傳輸概要,這里使用該概要來同步發送 CBE 到服務器中,如圖 6 所示。
在傳輸概要中指定的事件總線 JNDI 名稱是 CEI 服務器 EJB 界面的 JNDI 名稱。通過選擇 Resource => Common Event Infrastructure Provider => Event Bus Transmission Profile 來定位事件總線傳輸概要,并選擇合適的概要,如圖 6 所示。
異步發射器
異步發射器使用 JMS 發送事件到 CEI 服務器。要使服務器能夠監聽進來的事件隊列,需要配置和安裝 MDB 和監聽器端口。CEI 提供了配置和安裝諸如 MDB 的腳本。該教本位于在 WebSphere\AppServer\event\application 目錄下的位 event-message.jacl 文件中,并使用下面的參數來執行。
|
該腳本會安裝一個名為 CommonEventInfrastructure_JMSApp 的應用程序,該應用程序包括了一個 MDB,CEI 服務器將使用這個 MDB 來來監聽進入的 CBEs。在定義的范圍中使用下面的 JMS 隊列、隊列連接工廠 JNDI 名稱及發射器工廠概要來配置 JMS 傳輸概要。重啟應用程序服務器之后,找到概要 CommonEventInfrastructure_JMSApp-TransmissionProfile 和 CCommonEventInfrastructure_JMSApp-EmitterProfile,如圖 7 和圖 8 所示的那樣。CommonEventInfrastructure_JMSApp-TransmissionProfile 指定了對 JMS 隊列連接工廠和目標隊列的 JNDI 名稱,并且發射器將使用它們來發送事件到 CEI 服務器。在管理控制臺中,通過選擇 Resources => <JMS provider> 來配置實際的 JMS 隊列和隊列連接工廠資源。本文并沒有介紹如何配置 JMS 資源,在此提到它們僅僅是為了本文的完整性。
在此場景中,異步發射器也過濾了不需要的 CBE。啟用過濾功能,在發射器工廠概要資源里選擇 Filtering Enabled 復選框,并在 Filter Factory JNDI Name 中輸入 filters/highSeverityFilter
。如圖 8 所示。
過濾器工廠的 JNDI 名稱一定要與過濾器工廠概要資源的 JNDI 名稱一致。當發射器接收到 CBE 時,它將使用過濾器決定是否把該事件發送到 CEI 服務器。要創建過濾器工廠概要,選擇 Resources => Common Event Infrastructure Provider => Filter Factory Profile 并點擊 new。輸入如下面表 2 和圖 9 中所示的信息。
表 2:過濾工廠概要的配置設置值
配置選項 | 配置值 |
Name | High Severity Filter |
JNDI Name | filters/highSeverityFilter |
Filter Configuration String | CommonBaseEvent[@severity=70] |
過濾器配置字符串是用于過濾器 CBE 的 XPath 表述。要獲得關于 XPath 的更多信息,請參閱參考資料部分。
配置事件分發如果已在事件服務器概要中啟用了分發,那么當 CEI 服務器接收到事件后,服務器會檢查事件是否與事件組相匹配。通過在管理控制臺中選擇 Resources => Common Event Infrastructure Provider => Event Group Profile List, 在事件組概要清單中配置事件組。WebSphere 安裝缺省會創建一個默認的事件組概要清單,CEI 服務器將被自動配置來使用該事件組概要清單。選擇默認的事件組概要清單,如下面的圖 10 中所示的那樣,并點擊表示為紅色的 Event Group Profiles。
每一個事件組概要配置會定義一個邏輯事件組。一個事件能與許多事件組概要相匹配,但是在本文中,我們為本場景用到的每一個事件類型僅配置一個事件組概要。配置第一個事件組概要,選擇 new。 輸入如表 3 中所示的事件組概要信息。此概要如圖 11 所示。表 3:NewOrder 事件組的配置設置值
配置選項 | 配置值 |
Name | NewOrder |
Event Selector String | CommonBaseEvent[@extensionName='NewOrder'] |
Topic JNDI Name | jms/cei/NewOrderTopic |
Topic Connection Factory JNDI Name | jms/cei/NewOrderTCF |
事件選擇器字符串應當是有效的 XPath 表達,CEI 服務器利用它來匹配事件。如果接受到帶 NewOrder 的 extensionName 的事件,CEI 服務器將發送該事件到配置的 JMS 主題中??梢詾槭录M概要配置 JMS 隊列,但在本例中僅僅需要 JMS 主題。
為第二個事件組創建一個新的事件組概要,如圖 12 所示。輸入表 4 中指定的概要信息。表 4:HighSeverityAlert 事件組配置設定值
配置選項 | 配置值 |
Name | HighSeverityAlert |
Event Selector String | CommonBaseEvent[@severity=70] |
Topic JNDI Name | none |
Topic Connection Factory JNDI Name | none |
雖然您可以配置事件組概要使用多個分發隊列資源,但在本場景中僅創建一個。在圖 12 中選擇顯示為紅色的 DistributionQueues。
創建一個新的分發隊列資源(參閱圖 13);點擊 new 并輸入表 5 中指定的信息。表 5:分發隊列的配置設定值
配置選項 | 配置值 |
Queue JNDI Name | jms/cei/HighSeverityAlterQ |
Queue Connection Factory JNDI Name | jms/cei/HighSeverityAlterQCF |
如果要求 CEI 服務器接收問題嚴重級別為 70 的 CBE,那么 CBE 將匹配這個事件組概要,并將分發到配置的 JMS 隊列中。上面描述的兩種配置事件組概要都使用了 JMS 隊列和主題 JNDI 名稱。為了讓本文描述的場景能真正工作起來,這些實際的 JMS 資源 必須在相應的 JMS Provider 上配置。但是為了簡單起見,本文不對其進行描述。
結束語
公共事件基礎架構(CEI)能配置來接收、持久保存和分發事件。WebSphere 管理控制臺可以用來在單個應用程序服務器和跨多個服務器間創建多個不同配置。本文描述了如何利用發射器工廠概要改變發射器行為,并展示了如何配置服務器來持久保留和分發事件。 以事件組概要的形式來定義邏輯組,然后通過該邏輯組來分發事件,而且可以將它們與 JMS 主題和隊列關聯起來。盡管本文并沒有考慮分發系統,但是也展示了一些可以構建在其上的公共事件基礎架構的配置功能。
(責任編輯:城塵)
原文轉自:http://www.anti-gravitydesign.com