この章では、選択されたサービス品質によってOracle CEPアプリケーションの構成方法を説明します。次の項が含まれます。
スケーラビリティ・オプションの詳細は、第18章「スケーラビリティについて」を参照してください。
この項では、Oracle CEPイベント・パーティショナでチャネルを構成する方法について説明します。
詳細は、18.2.2項「イベント・パーティショナ・チャネル」を参照してください。
イベント・パーティショナ・チャネルでスケーラビリティを構成するには:
EPNにチャネルを追加します。
詳細は、第8章「チャネルの構成」を参照してください。
2つ以上の同一のリスナーにチャネルを接続します。
たとえば、同一のOracle CQLルールで構成された2つ以上のOracle CQLプロセッサにチャネルを接続します。
詳細は、5.4.2項「ノードの接続」を参照してください。
チャネルを構成するために、EPNアセンブリ・ファイルを編集します。次を参照してください。
max-threads
を0に設定します。
チャネルは、パススルーとして機能します。イベント順序が保持されます。
例19-1では、このようなチャネルを表示します。
例19-1 イベント・パーティションのためのチャネルの構成
...
<wlevs:channel id="priceStream" event-type="PriceEvent" max-threads="0" >
<wlevs:listener ref="filterFanoutProcessor1" />
<wlevs:listener ref="filterFanoutProcessor2" />
<wlevs:listener ref="filterFanoutProcessor3" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...
eventPartitioner
のインスタンス・プロパティをチャネル要素に追加するようにEPNアセンブリ・ファイルを編集します。例19-2を参照してください。
例19-2 チャネルeventPartionerのインスタンス・プロパティ
...
<wlevs:channel id="priceStream" event-type="PriceEvent" max-threads="0" >
<wlevs:instance-property name="eventPartitioner" value="true" />
<wlevs:listener ref="filterFanoutProcessor1" />
<wlevs:listener ref="filterFanoutProcessor2" />
<wlevs:listener ref="filterFanoutProcessor3" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...
アプリケーションをアセンブルし、デプロイします。
詳細は、第20章「Oracle CEPアプリケーションのアセンブルおよびデプロイ」を参照してください。
実行時に、Oracle CEPサーバーは各受信イベントを別のリスナーにディスパッチします。
この項では、セレクタで受信JMSイベント・ストリームをパーティションするためにActiveActiveGroupBean
を使用するようにOracle CEPアプリケーションを構成する方法について説明します。次の項が含まれます。
詳細は、18.2.1項「ActiveActiveGroupBean」を参照してください。
Oracle CEP高可用性を使用しないアプリケーションの場合、マルチサーバー・ドメインでセレクタを使用して受信JMSイベント・ストリームをパーティションするためにActiveActiveGroupBean
を使用できます。
Oracle CEP高可用性アプリケーションでActiveActiveGroupBean
を使用する方法は、19.2.2項「Oracle CEP高可用性を使用するJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。
詳細は、18.2.1.1項「高可用性なしのActiveActiveGroupBeanを使用してOracle CEPアプリケーションのスケーラビリティ」を参照してください。
Oracle CEP高可用性なしのJMSアプリケーションのスケーラビリティを構成するために次の手順を実行します。
マルチサーバー・ドメインを作成します。
詳細は、『Oracle CEP管理者ガイド』のマルチサーバー・ドメインの概要を参照してください。
この例では、デプロイメント・グループの名前は、MyDeploymentGroup
です。
適切なActiveActiveGroupBean
通知グループをcluster
要素のgroups
子要素に追加するように各Oracle CEPサーバーのOracle CEPサーバー構成ファイルを構成します。
Oracle CEPサーバー構成ファイルのconfig.xml
は、DOMAIN_DIR
/
servername
/config
ディレクトリにあります。DOMAIN_DIR
は、メイン・ドメイン・ディレクトリを示し、servername
は、特定のサーバー・インスタンスを示します。
たとえば、表19-2では、ocep-server-1
、ocep-server-2
、ocep-server-3
およびocep-server-4
のOracle CEPサーバーのcluster
要素を示します。デプロイメント・グループはMyDeploymentGroup
であり、通知グループがデフォルトのActiveActiveGroupBean
通知グループ・ネーミングを使用して定義されます。
オプションで、19.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」の説明に従って、独自のグループ命名式を定義できます。
表19-1 Oracle CEPサーバー構成ファイル・グループ要素構成
パーティション | cluster要素 |
---|---|
|
<cluster> <server-name>ocep-server-1</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups> </cluster> |
|
<cluster> <server-name>ocep-server-2</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups> </cluster> |
|
<cluster> <server-name>ocep-server-3</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group3</groups> </cluster> |
|
<cluster> <server-name>ocep-server-4</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group4</groups> </cluster> |
Oracle CEPアプリケーションを作成します。
例19-7に示すように、ActiveActiveGroupBean
要素を追加するために、EPNアセンブリ・ファイルを構成します。
JMSインバウンド・アダプタのjms-adapter
要素にパラメータ化されたmessage-selector
を定義します。
JMSインバウンド・アダプタのjms-adapter
要素にgroup-binding
子要素を追加するために、コンポーネント構成ファイルを編集します。
例19-9示すように、各可能JMSメッセージ・セレクタ値に対して1つのgroup-binding
要素を追加します。
例19-4 ocep-server-1用のjms-adapterセレクタ定義
<jms-adapter> <name>JMSInboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic1</destination-jndi-name> <user>weblogic</user> <password>weblogic1</password> <work-manager>JettyWorkManager</work-manager> <concurrent-consumers>1</concurrent-consumers> <session-transacted>true</session-transacted> <message-selector>${CONDITION}</message-selector> <bindings> <group-binding group-id="ActiveActiveGroupBean_group1"> <param id="CONDITION">acctid > 400</param> </group-binding> <group-binding group-id="ActiveActiveGroupBean_group2"> <param id="CONDITION">acctid BETWEEN 301 AND 400</param> </group-binding> <group-binding group-id="ActiveActiveGroupBean_group3"> <param id="CONDITION">acctid BETWEEN 201 AND 300</param> </group-binding> <group-binding group-id="ActiveActiveGroupBean_group4"> <param id="CONDITION">acctid <= 200</param> </group-binding> </bindings> </jms-adapter>
この構成では、ActiveActiveGroupBean_group1
を含むcluster
要素、groups
子要素でアプリケーションをOracle CEPサーバーにデプロイすると、CONDITION
パラメータがacctid > 400
と定義され、acctid
プロパティが400以上であるイベントがアプリケーションにより処理されます。
マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第20章「Oracle CEPアプリケーションのアセンブルおよびデプロイ」を参照してください。
実行時に、各Oracle CEPサーバーがActiveActiveGroupBean
通知グループに対するmessage-selector
にアプリケーションのインスタンスを構成します。アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックをパーティションします。
ActiveActiveGroupBean
を使用して、Oracle CEP高可用性のマルチサーバー・ドメインで受信JMSイベント・ストリームをパーティションできます。
この手順では、図19-1に示すサンプルEPN、例19-5に示す対応するEPNアセンブリ・ファイルおよび例19-6に示す対応するコンポーネント構成ファイルを含む17.1.4項「JMSで精度の高いリカバリを構成する方法」のサンプル・アプリケーションを使用します。
例19-5 JMS EPNアセンブリ・ファイルを使用して精度の高いリカバリ
<?xml version="1.0" encoding="UTF-8"?> <beans ... > <wlevs:event-type-repository> <wlevs:event-type type-name="StockTick"> <wlevs:properties> <wlevs:property name="lastPrice" type="double" /> <wlevs:property name="symbol" type="char" /> </wlevs:properties> </wlevs:event-type> </wlevs:event-type-repository> <wlevs:adapter id="JMSInboundAdapter" provider="jms-inbound"> <wlevs:listener ref="myHaInputAdapter"/> </wlevs:adapter> <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" > <wlevs:instance-property name="keyProperties" value="sequenceNo"/> <wlevs:instance-property name="timeProperty" value="inboundTime"/> </wlevs:adapter> <wlevs:channel id="channel1" event-type="StockTick"> <wlevs:listener ref="processor1" /> <wlevs:source ref="myHaInputAdapter"/> <wlevs:application-timestamped> <wlevs:expression>inboundTime</wlevs:expression> </wlevs:application-timestamped> </wlevs:channel> <wlevs:processor id="processor1"> <wlevs:listener ref="channel2" /> </wlevs:processor> <wlevs:channel id="channel2" event-type="StockTick"> <wlevs:listener ref="myHaCorrelatingAdapter" /> </wlevs:channel> <wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" > <wlevs:instance-property name="correlatedSource" ref="clusterCorrelatingOutstream"/> <wlevs:instance-property name="failOverDelay" value="2000"/> <wlevs:listener ref="JMSOutboundAdapter"/> </wlevs:adapter> <wlevs:adapter id="JMSOutboundAdapter" provider="jms-outbound"> </wlevs:adapter> <wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound"> </wlevs:adapter> <wlevs:channel id="clusterCorrelatingOutstream" event-type="StockTick" advertise="true"> <wlevs:source ref="JMSInboundAdapter2"/> </wlevs:channel> </beans>
例19-6 JMSコンポーネント構成アセンブリ・ファイルを使用して精度の高いリカバリ
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application" xmlns:ha="http://www.oracle.com/ns/cep/config/cluster"> <processor> <name>processor1</name> <rules> <query id="helloworldRule"> <![CDATA[ select * from channel1 [Now] ]]> </query> </rules> </processor> <jms-adapter> <name>JMSInboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic1</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> <jms-adapter> <name>JMSInboundAdapter2</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic2</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> <jms-adapter> <name>JMSOutboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic2</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> </wlevs:config>
図19-2に示すように、この手順実行の結果、Oracle CEP高可用性構成が作成されます。
詳細は、18.2.1.2項「高可用性のあるActiveActiveGroupBeanを使用してOracle CEPアプリケーションのスケーラビリティ」を参照してください。
Oracle CEP高可用性のあるJMSアプリケーションのスケーラビリティを構成するために次の手順を実行します。
マルチサーバー・ドメインを作成します。
詳細は、『Oracle CEP管理者ガイド』のマルチサーバー・ドメインの概要を参照してください。
この例では、デプロイメント・グループの名前は、MyDeploymentGroup
です。
適切なActiveActiveGroupBean
通知グループをcluster
要素のgroups
子要素に追加するように各Oracle CEPサーバーのOracle CEPサーバー構成ファイルを構成します。
Oracle CEPサーバー構成ファイルのconfig.xml
は、DOMAIN_DIR
/
servername
/config
ディレクトリにあります。DOMAIN_DIR
は、メイン・ドメイン・ディレクトリを示し、servername
は、特定のサーバー・インスタンスを示します。
たとえば、表19-2では、ocep-server-1
、ocep-server-2
、ocep-server-3
およびocep-server-4
のOracle CEPサーバーのcluster
要素を示します。デプロイメント・グループはMyDeploymentGroup
であり、通知グループはデフォルトのActiveActiveGroupBean
通知グループ・ネーミングを使用して定義します。
ocep-server-1
とocep-server-2
は同一の通知グループ名前(ActiveActiveGroupBean_group1
)を使用し、ocep-server-3
とocep-server-4
は同一の通知グループ名前(ActiveActiveGroupBean_group2
)を使用します。
オプションで、19.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」の説明に従って、独自のグループ命名式を定義できます。
表19-2 Oracle CEPサーバー構成ファイル・グループ要素構成
パーティション | クラスタ要素 |
---|---|
|
<cluster> <server-name>ocep-server-1</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups> </cluster> |
|
<cluster> <server-name>ocep-server-2</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups> </cluster> |
|
<cluster> <server-name>ocep-server-3</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups> </cluster> |
|
<cluster> <server-name>ocep-server-4</server-name> ... <enabled>coherence</enabled> ... <groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups> </cluster> |
Oracle CEP高可用性アプリケーションを作成します。
詳細は、第17章「高可用性の構成」を参照してください。
例19-7に示すように、ActiveActiveGroupBean
要素を追加するために、EPNアセンブリ・ファイルを構成します。
例19-8に示すように、インバウンドJMSアダプタ用のjms-adapter要素を構成するために、コンポーネント構成ファイルを編集します。
各インバウンドJMSアダプタは異なるトピックをリスニングする必要があります。
session-transacted
をtrue
に設定します。
例19-8 インバウンドJMSアダプタ用のjms-adapter要素
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application" xmlns:ha="http://www.oracle.com/ns/cep/config/cluster"> ... <jms-adapter> <name>JMSInboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic1</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> <jms-adapter> <name>JMSInboundAdapter2</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic2</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> </wlevs:config>
詳細は、第6章「JMSアダプタの構成」を参照してください。
各JMSインバウンド・アダプタのjms-adapter
要素にパラメータ化されたmessage-selector
を定義します。
JMSインバウンド・アダプタのjms-adapter
要素にgroup-binding
子要素を追加するために、コンポーネント構成ファイルを編集します。
例19-9示すように、各可能JMS message-selector
値に対して1つのgroup-binding
要素を追加します。
例19-9 ocep-server-1用のjms-adapterセレクタ定義
<jms-adapter> <name>JMSInboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic1</destination-jndi-name> <session-transacted>true</session-transacted> <message-selector>${CONDITION}</message-selector> <bindings> <group-binding group-id="ActiveActiveGroupBean_group1"> <param id="CONDITION">acctid <= 1000</param> </group-binding> <group-binding group-id="ActiveActiveGroupBean_group2"> <param id="CONDITION">acctid > 1000</param> </group-binding> </bindings> </jms-adapter>
この構成では、ActiveActiveGroupBean_group1
を含むcluster
要素、groups
子要素を持つアプリケーションをOracle CEPサーバーにデプロイすると、CONDITION
パラメータがacctid <= 1000
と定義され、acctid
プロパティが1000以下であるイベントがアプリケーションにより処理されます。同様に、ActiveActiveGroupBean_group2
を含むcluster
要素、groups
子要素を持つアプリケーションをOracle CEPサーバーにデプロイすると、CONDITION
パラメータがacctid > 1000
と定義され、acctid
プロパティが1000以上であるイベントがアプリケーションにより処理されます。
例19-10に示すように、アウトバウンドJMSアダプタ用のjms-adapter
要素を構成するために、コンポーネント構成ファイルを編集します。
対応するインバウンド・アダプタ(この例では、JMSInboundAdapter2
: ./Topic2
)と同一トピックでアウトバウンドJMSアダプタを構成します。
session-transacted
をtrue
に設定します。
例19-10 アウトバウンドJMSアダプタ用のjms-adapter要素
<?xml version="1.0" encoding="UTF-8"?> <wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application" xmlns:ha="http://www.oracle.com/ns/cep/config/cluster"> ... <jms-adapter> <name>JMSInboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic1</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> <jms-adapter> <name>JMSInboundAdapter2</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic2</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> <jms-adapter> <name>JMSOutboundAdapter</name> <event-type>StockTick</event-type> <jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url> <destination-jndi-name>./Topic2</destination-jndi-name> <session-transacted>true</session-transacted> ... </jms-adapter> </wlevs:config>
詳細は、第6章「JMSアダプタの構成」を参照してください。
マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第20章「Oracle CEPアプリケーションのアセンブルおよびデプロイ」を参照してください。
実行時に、各Oracle CEPサーバーがActiveActiveGroupBean
通知グループに対するmessage-selector
でアプリケーションのインスタンスを構成します。これにより、アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックがパーティションされます。
ActiveActiveGroupBean
グループの有効のOracle CEPサーバーが停止すると、ActiveActiveGroupBean
グループでのスタンバイOracle CEPサーバーに対しOracle CEPサーバーがOracle CEP高可用性フェイルオーバーを実行します。
デフォルトでは、ActiveActiveGroupBean
は次の名前の通知グループを作成します。
ActiveActiveGroupBean_X
X
は文字列です。
実行時に、ActiveActiveGroupBean
は、Oracle CEPサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。
ActiveActiveGroupBean_\\w+
一致が見つかったら、その名前の通知グループを作成します。
オプションで、別の通知グループ・ネーミング・パターンを指定するために独自のグループ・パターンを定義できます。
ActiveActiveGroupBeanグループ・パターン一致の構成方法
例19-11に示すように、ActiveActiveGroupBean
要素にgroupPattern
属性を追加するためにEPNアセンブリ・ファイルを構成します。
通知グループに対し使用するクラスタ・グループ・ネーミング・ルールに一致するgroupPattern
属性の値を指定します。