ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Complex Event Processing開発者ガイド
11gリリース1 (11.1.1.6.2) for Eclipse
B61654-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

21 高可用性の構成

この章では、フェイルオーバー、リカバリおよびキュー・トリミングの構成、および高可用性アダプタの構成に関する情報など、必要なサービス品質を提供するためにOracle Complex Event Processing (Oracle CEP) アプリケーションの高可用性を構成する方法について説明します。

高可用性オプションに関する詳細は、第20章「高可用性について」を参照してください。

21.1 高可用性のサービス品質の構成

EPNアセンブリ・ファイルおよびコンポーネント構成ファイルで、Oracle CEPの高可用性のサービス品質を構成します。このような構成ファイルに関する一般情報は、次を参照してください。


注意:

Oracle CEPの高可用性の構成に変更を加えた後、Oracle CEPアプリケーションを再デプロイする必要があります。24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。


この項では次について説明します:

スケーラビリティ用Oracle CEPの高可用性アプリケーションの構成に関する詳細は、20.1.4項「高可用性およびスケーラビリティ」を参照してください。

21.1.1 シンプル・フェイルオーバーの構成方法

スライディング・ウィンドウのサイズをゼロ(0)に設定して、Oracle CEPバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図21-1で示すEPNの例から始まり、シンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例21-1は対応するEPNアセンブリ・ファイルを示し、例21-2は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.1項「シンプル・フェイルオーバー」を参照してください。

図21-1 シンプル・フェイルオーバーのEPN

図21-1の説明が続きます
「図21-1 シンプル・フェイルオーバーのEPN」の説明

例21-1 シンプル・フェイルオーバーのEPNアセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

    <wlevs:event-type-repository>
        <wlevs:event-type type-name="HelloWorldEvent">
            <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>

    <wlevs:adapter id="helloworldAdapter" 
        class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
        <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
    </wlevs:adapter>

    <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
        <wlevs:listener ref="helloworldProcessor"/>
        <wlevs:source ref="helloworldAdapter"/>
    </wlevs:channel>

    <wlevs:processor id="helloworldProcessor" />
    
    <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
        <wlevs:listener>
            <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
        </wlevs:listener>
        <wlevs:source ref="helloworldProcessor"/>
    </wlevs:channel>

</beans>

例21-2 シンプル・フェイルオーバーのコンポーネント構成アセンブリ・ファイル

<?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>helloworldProcessor</name>
        <rules>
            <query id="helloworldRule">
                <![CDATA[ select * from helloworldInputChannel [Now] ]]>
            </query>
        </rules>
    </processor>
</wlevs:config>

シンプル・フェイルオーバーを構成するには:

  1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

    詳細は、次を参照してください:

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

  2. Oracle CEPアプリケーションを作成します。

    詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

  3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

    • com.bea.wlevs.ede.api.cluster

    • com.oracle.cep.cluster.hagroups

    • com.oracle.cep.cluster.ha.adapter

    • com.oracle.cep.cluster.ha.api

    詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

  4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-3に示すように、Oracle CEPの高可用性バッファリング出力アダプタを追加します。

    • チャネルhelloworldOutputChannelの後に、providerha-bufferingに設定したwlevs:adapter要素を追加します。

    • idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelwlevs:listener要素を更新します。

    • wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

    例21-3 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

    <?xml version="1.0" encoding="UTF-8"?>
    <beans ...>
    
        <wlevs:event-type-repository>
            <wlevs:event-type type-name="HelloWorldEvent">
                <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
            </wlevs:event-type>
        </wlevs:event-type-repository>
    
        <wlevs:adapter id="helloworldAdapter" 
            class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
            <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
        </wlevs:adapter>
    
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
        </wlevs:channel>
    
        <wlevs:processor id="helloworldProcessor" />
    
        <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
            <wlevs:listener ref="myHaSlidingWindowAdapter"/>
            <wlevs:source ref="helloworldProcessor"/>
        </wlevs:channel>
    
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
        </wlevs:adapter>
    
    </beans>
    
  5. オプションで、入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例21-4で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。

    シンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないためシステムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

    この例では、イベント・プロパティarrivalTimeが使用されます。

    wlevs:expressionをこのイベント・プロパティに設定する必要があります。

    例21-4 アプリケーション・タイムスタンプの構成

    ...
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
            <wlevs:source ref="myHaInputAdapter"/>
            <wlevs:application-timestamped>
                <wlevs:expression>arrivalTime</wlevs:expression>
            </wlevs:application-timestamped>
        </wlevs:channel>
    ...
    
  6. Oracle CEPの高可用性ブロードキャスト・バッファリング・アダプタを構成します。

    インスタンス・プロパティwindowLengthを、例21-5で示すようにゼロ(0)に設定します。

    例21-5 バッファリング出力アダプタにおけるwindowLengthの構成

    ...
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
            <wlevs:instance-property name="windowLength" value="0"/>
        </wlevs:adapter>
    ...
    

    詳細は、21.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

  7. オプションで、コンポーネント構成ファイルを例21-6で示すように、Oracle CEPの高可用性バッファリング出力アダプタを含むように構成します。

    例21-6 高可用性アダプタを使用したシンプル・フェイルオーバーのコンポーネント構成ファイル

    <?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>helloworldProcessor</name>
            <rules>
                <query id="helloworldRule">
                    <![CDATA[ select * from helloworldInputChannel [Now] ]]>
                </query>
            </rules>
        </processor>
    
        <ha:ha-buffering-adapter >
            <name>myHaSlidingWindowAdapter</name>
            <window-length>0</window-length>
        </ha:ha-buffering-adapter >
    
    </wlevs:config>
    

    詳細は、次を参照してください:

  8. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。

    詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

    Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

21.1.2 バッファリングを使用するシンプル・フェイルオーバーの構成方法

スライディング・ウィンドウのサイズをゼロ(0)より大きく設定して、Oracle CEPバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図21-2で示すEPNの例から始まり、バッファリングを使用するシンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例21-7は対応するEPNアセンブリ・ファイルを示し、例21-8は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.2項「バッファリングによるシンプル・フェイルオーバー」を参照してください。

図21-2 バッファリングEPNを使用するシンプル・フェイルオーバー

図21-2の説明が続きます
「図21-2 バッファリングEPNを使用するシンプル・フェイルオーバー」の説明

例21-7 バッファリングEPNアセンブリ・ファイルを使用するシンプル・フェイルオーバー

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

    <wlevs:event-type-repository>
        <wlevs:event-type type-name="HelloWorldEvent">
            <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>

    <wlevs:adapter id="helloworldAdapter" 
        class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
        <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
    </wlevs:adapter>

    <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
        <wlevs:listener ref="helloworldProcessor"/>
        <wlevs:source ref="helloworldAdapter"/>
    </wlevs:channel>

    <wlevs:processor id="helloworldProcessor" />
    
    <wlevs:channel id="helloworldOutputChannel" 
        event-type="HelloWorldEvent" advertise="true">
        <wlevs:listener>
            <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
        </wlevs:listener>
        <wlevs:source ref="helloworldProcessor"/>
    </wlevs:channel>

</beans>

例21-8 バッファリング・コンポーネント構成アセンブリ・ファイルを使用するシンプル・フェイルオーバー

<?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>helloworldProcessor</name>
        <rules>
            <query id="helloworldRule">
                <![CDATA[ select * from helloworldInputChannel [Now] ]]>
            </query>
        </rules>
    </processor>
</wlevs:config>

バッファリングを使用してシンプル・フェイルオーバーを構成するには:

  1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

    詳細は、次を参照してください:

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

  2. Oracle CEPアプリケーションを作成します。

    詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

  3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

    • com.bea.wlevs.ede.api.cluster

    • com.oracle.cep.cluster.hagroups

    • com.oracle.cep.cluster.ha.adapter

    • com.oracle.cep.cluster.ha.api

    詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

  4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-3に示すように、Oracle CEPの高可用性バッファリング出力アダプタを追加します。

    • チャネルhelloworldOutputChannelの後に、providerha-bufferingに設定したwlevs:adapter要素を追加します。

    • idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelwlevs:listener要素を更新します。

    • wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

    例21-9 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

    <?xml version="1.0" encoding="UTF-8"?>
    <beans ...>
    
        <wlevs:event-type-repository>
            <wlevs:event-type type-name="HelloWorldEvent">
                <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
            </wlevs:event-type>
        </wlevs:event-type-repository>
    
        <wlevs:adapter id="helloworldAdapter" 
            class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
            <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
        </wlevs:adapter>
    
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
        </wlevs:channel>
    
        <wlevs:processor id="helloworldProcessor" />
    
        <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" 
            advertise="true">
            <wlevs:listener ref="myHaSlidingWindowAdapter"/>
            <wlevs:source ref="helloworldProcessor"/>
        </wlevs:channel>
    
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
        </wlevs:adapter>
    
    </beans>
    
  5. オプションで、入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例21-10で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。

    バッファリングを使用するシンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないため、システムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

    この例では、イベント・プロパティarrivalTimeが使用されます。

    wlevs:expressionをこのイベント・プロパティに設定する必要があります。

    例21-10 アプリケーション・タイムスタンプの構成

    ...
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
            <wlevs:source ref="myHaInputAdapter"/>
            <wlevs:application-timestamped>
                <wlevs:expression>arrivalTime</wlevs:expression>
            </wlevs:application-timestamped>
        </wlevs:channel>
    ...
    
  6. Oracle CEPの高可用性ブロードキャスト・バッファリング・アダプタを構成します。

    インスタンス・プロパティwindowLengthを、例21-11で示すようにゼロ(0)より大きい値に設定します。

    例21-11 バッファリング出力アダプタにおけるwindowLengthの構成

    ...
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
            <wlevs:instance-property name="windowLength" value="15000"/>
        </wlevs:adapter>
    ...
    

    詳細は、21.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

  7. オプションで、コンポーネント構成ファイルを例21-12で示すように、Oracle CEPの高可用性バッファリング出力アダプタを含むように構成します。

    例21-12 バッファリング・コンポーネント構成ファイルを使用するシンプル・フェイルオーバー

    <?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>helloworldProcessor</name>
            <rules>
                <query id="helloworldRule">
                    <![CDATA[ select * from helloworldInputChannel [Now] ]]>
                </query>
            </rules>
        </processor>
    
        <ha:ha-buffering-adapter >
            <name>myHaSlidingWindowAdapter</name>
            <window-length>15000</window-length>
        </ha:ha-buffering-adapter >
    
    </wlevs:config>
    

    詳細は、次を参照してください:

  8. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、バッファリング出力アダプタのwarm-up-window-lengthを構成します。

    詳細は、次を参照してください:

  9. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。

    詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

    Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

21.1.3 軽量キュー・トリミングの構成方法

Oracle CEPの高可用性入力アダプタおよびブロードキャスト出力アダプタを使用して、軽量キュー・トリミングを構成します。

この手順は、図21-3で示すEPNの例から始まり、軽量キュー・トリミング用に構成するために必要なコンポーネントを加えていきます。例21-13は対応するEPNアセンブリ・ファイルを示し、例21-14は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.3項「軽量キュー・トリミング」を参照してください。

図21-3 軽量キュー・トリミングのEPN

図21-3の説明が続きます
「図21-3 軽量キュー・トリミングのEPN」の説明

例21-13 軽量キュー・トリミングのEPNアセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

    <wlevs:event-type-repository>
        <wlevs:event-type type-name="HelloWorldEvent">
            <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
        </wlevs:event-type>
    </wlevs:event-type-repository>

    <wlevs:adapter id="helloworldAdapter" 
        class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
        <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
    </wlevs:adapter>

    <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
        <wlevs:listener ref="helloworldProcessor"/>
        <wlevs:source ref="helloworldAdapter"/>
    </wlevs:channel>

    <wlevs:processor id="helloworldProcessor" />
    
    <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" 
        advertise="true">
        <wlevs:listener>
            <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
        </wlevs:listener>
        <wlevs:source ref="helloworldProcessor"/>
    </wlevs:channel>

</beans>

例21-14 軽量キュー・トリミングのコンポーネント構成アセンブリ・ファイル

<?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>helloworldProcessor</name>
        <rules>
            <query id="helloworldRule">
                <![CDATA[ select * from helloworldInputChannel [Now] ]]>
            </query>
        </rules>
    </processor>
</wlevs:config>

軽量キュー・トリミングを構成するには:

  1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

    詳細は、次を参照してください:

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

  2. Oracle CEPアプリケーションを作成します。

    詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

  3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

    • com.bea.wlevs.ede.api.cluster

    • com.oracle.cep.cluster.hagroups

    • com.oracle.cep.cluster.ha.adapter

    • com.oracle.cep.cluster.ha.api

    詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

  4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-15に示すように、Oracle CEPの高可用性入力アダプタを追加します。

    • 通常の入力アダプタhelloworldAdapterの後に、providerha-inboundに設定したwlevs:adapter要素を追加します。

    • wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタhelloworldAdapterに追加します。

    • wlevs:source要素を、idごとにha-inboundアダプタを参照するhelloworldInputChannelに追加します。

    例21-15 軽量キュー・トリミングのEPNアセンブリ・ファイル: 高可用性入力アダプタ

    <?xml version="1.0" encoding="UTF-8"?>
    <beans ...>
    
        <wlevs:event-type-repository>
            <wlevs:event-type type-name="HelloWorldEvent">
                <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
            </wlevs:event-type>
        </wlevs:event-type-repository>
    
        <wlevs:adapter id="helloworldAdapter" 
            class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
            <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
            <wlevs:listener ref="myHaInputAdapter"/>
        </wlevs:adapter>
    
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
        </wlevs:adapter>
    
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
            <wlevs:source ref="myHaInputAdapter"/>
        </wlevs:channel>
    
        <wlevs:processor id="helloworldProcessor" />
    
        <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" 
            advertise="true">
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
            <wlevs:source ref="helloworldProcessor"/>
        </wlevs:channel>
    
    </beans>
    
  5. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-16に示すように、Oracle CEPの高可用性ブロードキャスト出力アダプタを追加します。

    • チャネルhelloworldOutputChannelの後に、providerha-broadcastに設定したwlevs:adapter要素を追加します。

    • idごとにha-broadcastアダプタを参照するように、チャネルhelloworldOutputChannelwlevs:listener要素を更新します。

    • wlevs:listener要素を、HelloWorldBeanクラスを参照するha-broadcastアダプタに追加します。

    例21-16 軽量キュー・トリミングのEPNアセンブリ・ファイル: ブロードキャスト出力アダプタ

    <?xml version="1.0" encoding="UTF-8"?>
    <beans ...>
    
        <wlevs:event-type-repository>
            <wlevs:event-type type-name="HelloWorldEvent">
                <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
            </wlevs:event-type>
        </wlevs:event-type-repository>
    
        <wlevs:adapter id="helloworldAdapter" 
            class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
            <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
            <wlevs:listener ref="myHaInputAdapter"/>
        </wlevs:adapter>
    
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
        </wlevs:adapter>
    
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
            <wlevs:source ref="myHaInputAdapter"/>
        </wlevs:channel>
    
        <wlevs:processor id="helloworldProcessor" />
    
        <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" 
            advertise="true">
            <wlevs:listener ref="myHaBroadcastAdapter"/>
            <wlevs:source ref="helloworldProcessor"/>
        </wlevs:channel>
    
        <wlevs:adapter id="myHaBroadcastAdapter" provider="ha-broadcast" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
        </wlevs:adapter>
    
    </beans>
    
  6. Oracle CEPの高可用性入力アダプタを構成します。

    次の例の構成を検討します。

    詳細は、21.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

    例21-17 高可用性入力アダプタ: デフォルト構成

    この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
        </wlevs:adapter>
    ...
    

    例21-18 高可用性入力アダプタ: タプル・イベント

    この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。イベントはタプル・ベースのイベントであるため、eventTypeプロパティを使用してイベント型(MyEventType)を指定する必要があります。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
            <wlevs:instance-property name="eventType" value="MyEventType"/>
        </wlevs:adapter>
    ...
    

    例21-19 高可用性入力アダプタ: 1つのイベント・プロパティのキー

    この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(idという名前)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="keyProperties" value="id"/>
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
        </wlevs:adapter>
    ...
    

    例21-20 高可用性入力アダプタ: 複数のイベント・プロパティのキー

    この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-21で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
            <wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
        </wlevs:adapter>
    ...
    

    例21-21 MyCompoundKeyClassの実装

    package com.acme;
    
    public class MyCompoundKeyClass {
        private int orderID;
        private int accountID;
    
        public MyCompoundKeyClass() {}
    
        public int getOrderID() {
            return orderID;
        }
        public setOrderID(int orderID) {
            this.orderID = orderID;
        }
        public int getAccountID() {
            return accountID;
        }
        public setOrderID(int accountID) {
            this.accountID = accountID;
        }
    
        public int hashCode() {
        int hash = 1;
        hash = hash * 31 + orderID.hashCode();
        hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
        return hash;
        }
    
        public boolean equals(Object obj) {
            if (obj == this) return true;
            if (obj == null) return false;
            if (!(obj instanceof MyCompoundKeyClass)) return false;
            MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
            return k.accountID == accountID && k.orderID == orderID;
        }
    }
    
  7. 入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例21-22で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。

    wlevs:expressiontimePropertyの値に設定する必要があります。

    例21-22 アプリケーション・タイムスタンプの構成

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="keyProperties" value="id"/>
            <wlevs:instance-property name="eventType" value="HelloWorldEvent"/>
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
        </wlevs:adapter>
    
        <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
            <wlevs:listener ref="helloworldProcessor"/>
            <wlevs:source ref="myHaInputAdapter"/>
            <wlevs:application-timestamped>
                <wlevs:expression>arrivalTime</wlevs:expression>
            </wlevs:application-timestamped>
        </wlevs:channel>
    ...
    
  8. Oracle CEPの高可用性ブロードキャスト出力アダプタを構成します。

    次の例の構成を検討します。

    詳細は、21.2.3.1項「ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

    例21-23 ブロードキャスト出力アダプタ: デフォルト構成

    この例は、すべてのデフォルトを使用したブロードキャスト出力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、キーの値は非モノトニック(継続的に増加しません)かつ全体順序(一意)です。

    ...
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
        </wlevs:adapter>
    ...
    

    例21-24 ブロードキャスト出力アダプタ: 1つのイベント・プロパティのキー

    この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(timePropertyという名前)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序ではありません(一意ではありません)。

    ...
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
            <wlevs:instance-property name="keyProperties" value="timeProperty"/>
            <wlevs:instance-property name="monotonic" value="true"/>
            <wlevs:instance-property name="total-order" value="false"/>
        </wlevs:adapter>
    ...
    

    例21-25 ブロードキャスト出力アダプタ: 複数のイベント・プロパティのキー

    この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(timePropertyおよびaccountIDプロパティ)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序(一意)です。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-26で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

    ...
        <wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
            <wlevs:listener>
                <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
            </wlevs:listener>
            <wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
            <wlevs:instance-property name="monotonic" value="true"/>
            <wlevs:instance-property name="total-order" value="true"/>
        </wlevs:adapter>
    ...
    

    例21-26 MyCompoundKeyClassの実装

    package com.acme;
    
    public class MyCompoundKeyClass {
        private int timeProperty;
        private int accountID;
    
        public MyCompoundKeyClass() {}
    
        public int getTimeProperty() {
            return orderID;
        }
        public setTimeProperty(int timeProperty) {
            this.timeProperty = timeProperty;
        }
        public int getAccountID() {
            return accountID;
        }
        public setOrderID(int accountID) {
            this.accountID = accountID;
        }
    
        public int hashCode() {
        int hash = 1;
        hash = hash * 31 + timeProperty.hashCode();
        hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
        return hash;
        }
    
        public boolean equals(Object obj) {
            if (obj == this) return true;
            if (obj == null) return false;
            if (!(obj instanceof MyCompoundKeyClass)) return false;
            MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
            return k.accountID == accountID && k.orderID == orderID;
        }
    }
    
  9. オプションで、コンポーネント構成ファイルを例21-27で示すように、Oracle CEPの高可用性入力アダプタおよびバッファリング出力アダプタを含むように構成します。

    例21-27 軽量キュー・トリミングのコンポーネント構成ファイル

    <?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>helloworldProcessor</name>
            <rules>
                <query id="helloworldRule">
                    <![CDATA[ select * from helloworldInputChannel [Now] ]]>
                </query>
            </rules>
        </processor>
    
        <ha:ha-inbound-adapter>
            <name>myHaInputAdapter</name>
        </ha:ha-inbound-adapter>
     
        <ha:ha-broadcast-adapter>
            <name>myHaBroadcastAdapter</name>
            <trimming-interval units="events">10</trimming-interval>
        </ha:ha-broadcast-adapter>
    
    </wlevs:config>
    

    詳細は、次を参照してください:

  10. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、ブロードキャスト出力アダプタのwarm-up-window-lengthを構成します。

    詳細は、次を参照してください:

  11. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。

    詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

    Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

21.1.4 JMSによる正確なリカバリの構成方法

Oracle CEPの高可用性入力アダプタおよび相関出力アダプタを使用して、JMSによる正確なリカバリを構成します。

この手順では、図21-4が示すEPNの例を作成する方法を説明します。例21-28は対応するEPNアセンブリ・ファイルを示し、例21-29は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.4項「JMSによる正確なリカバリ」を参照してください。


注意:

正確なリカバリのためにJMSアダプタによって使用されるJMS宛先は、キューではなくトピックである必要があります。


図21-4 JMSのEPNによる正確なリカバリ

図21-4の説明が続きます
「図21-4 JMSのEPNによる正確なリカバリ」の説明

例21-28 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: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:channel id="channel2" event-type="StockTick">
        <wlevs:listener ref="myHaCorrelatingAdapter" />
    </wlevs:channel>

    <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>

例21-29 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>
</wlevs:config>

JMSによる正確なリカバリを構成するには:

  1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

    詳細は、次を参照してください:

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

    • 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

  2. Oracle CEPアプリケーションを作成します。

    詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

  3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

    • com.bea.wlevs.ede.api.cluster

    • com.oracle.cep.cluster.hagroups

    • com.oracle.cep.cluster.ha.adapter

    • com.oracle.cep.cluster.ha.api

    詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

  4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-30に示すように、Oracle CEPの高可用性入力アダプタを追加します。

    • 通常の入力アダプタJMSInboundAdapterの後に、providerha-inboundに設定したwlevs:adapter要素を追加します。

    • wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタJMSInboundAdapterに追加します。

    • wlevs:source要素を、idごとにha-inboundアダプタを参照するチャネルchannel1に追加します。

    例21-30 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:adapter>
    
        <wlevs:channel id="channel1" event-type="StockTick">
            <wlevs:listener ref="processor1" />
            <wlevs:source ref="myHaInputAdapter"/>
        </wlevs:channel>
    
    ...
    
    </beans>
    
  5. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-31に示すように、Oracle CEPの高可用性相関出力アダプタを追加します。

    • チャネルchannel2の後に、providerha-correlatingに設定したwlevs:adapter要素を追加します。

    • idごとにha-correlatingアダプタを参照するように、チャネルchannel2wlevs:listener要素を更新します。

    • wlevs:listener要素を、JMSOutboundAdapterクラスを参照するha-correlatingアダプタに追加します。

    例21-31 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:adapter>
    
        <wlevs:channel id="channel1" event-type="StockTick">
            <wlevs:listener ref="processor1" />
            <wlevs:source ref="myHaInputAdapter"/>
        </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:listener ref="JMSOutboundAdapter"/>
        </wlevs:adapter>
    
        <wlevs:adapter id="JMSOutboundAdapter" provider="jms-outbound">
        </wlevs:adapter>
    
    ...
    
    </beans>
    
  6. Oracle CEPの高可用性入力アダプタを構成します。

    次の例の構成を検討します。

    詳細は、21.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

    例21-32 高可用性入力アダプタ: デフォルト構成

    この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
        </wlevs:adapter>
    ...
    

    例21-33 高可用性入力アダプタ: タプル・イベント

    この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。イベントはタプル・ベースのイベントであるため、eventTypeプロパティを使用してイベント型(MyEventType)を指定する必要があります。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
            <wlevs:instance-property name="eventType" value="MyEventType"/>
        </wlevs:adapter>
    ...
    

    例21-34 高可用性入力アダプタ: 1つのイベント・プロパティのキー

    この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(sequenceNoという名前)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、inboundTimeという名前のイベント・プロパティです。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="keyProperties" value="sequenceNo"/>
            <wlevs:instance-property name="timeProperty" value="inboundTime"/>
        </wlevs:adapter>
    ...
    

    例21-35 高可用性入力アダプタ: 複数のイベント・プロパティのキー

    この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-36で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
            <wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
        </wlevs:adapter>
    ...
    

    例21-36 MyCompoundKeyClassの実装

    package com.acme;
    
    public class MyCompoundKeyClass {
        private int orderID;
        private int accountID;
    
        public MyCompoundKeyClass() {}
    
        public int getOrderID() {
            return orderID;
        }
        public setOrderID(int orderID) {
            this.orderID = orderID;
        }
        public int getAccountID() {
            return accountID;
        }
        public setOrderID(int accountID) {
            this.accountID = accountID;
        }
    
        public int hashCode() {
        int hash = 1;
        hash = hash * 31 + orderID.hashCode();
        hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
        return hash;
        }
    
        public boolean equals(Object obj) {
            if (obj == this) return true;
            if (obj == null) return false;
            if (!(obj instanceof MyCompoundKeyClass)) return false;
            MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
            return k.accountID == accountID && k.orderID == orderID;
        }
    }
    
  7. 入力アダプタ(channel1)からのチャネル・ダウンストリームを構成し、例21-37で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。

    wlevs:expressiontimePropertyの値に設定する必要があります。

    例21-37 アプリケーション・タイムスタンプの構成

    ...
        <wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
            <wlevs:instance-property name="eventType" value="HelloWorldEvent"/>
            <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>
    ...
    
  8. Oracle CEPの高可用性相関出力アダプタfailOverDelayを構成します。

    例21-38は、相関出力アダプタの構成を示し、ここではfailOverDelayが2000ミリ秒になっています。

    例21-38 相関出力アダプタの構成: failOverDelay

    ...
        <wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
            <wlevs:listener ref="JMSOutboundAdapter"/>
            <wlevs:instance-property name="failOverDelay" value="2000"/>
        </wlevs:adapter>
    ...
    

    詳細は、21.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

  9. 2番目の通常JMS入力アダプタを作成します。

    例21-39は、JMSInboundAdapter2という名前のJMSアダプタを示します。

    例21-39 インバウンドJMSアダプタのアセンブリ・ファイル

    ...
        <wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
        </wlevs:adapter>
    ...
    

    このJMS入力アダプタは、1番目のJMS入力アダプタ(JMSInboundAdapterなど)と同一となるように構成する必要があります。例21-40は、両方のJMS入力アダプタのコンポーネント構成ファイルを示します。両アダプタは、同一のプロバイダを含む完全に同一の構成になる必要があります。

    例21-40 インバウンド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">
        ...
        <jms-adapter>
            <name>JMSInboundAdapter</name>
            <jndi-provider-url>t3://localhost:7001</jndi-provider-url>
            <destination-jndi-name>./Topic1</destination-jndi-name>
            <user>weblogic</user>
            <password>weblogic</password>
            <work-manager>JettyWorkManager</work-manager>
            <concurrent-consumers>1</concurrent-consumers>
        </jms-adapter>
    
        <jms-adapter>
            <name>JMSInboundAdapter2</name>
            <jndi-provider-url>t3://localhost:7001</jndi-provider-url>
            <destination-jndi-name>./Topic1</destination-jndi-name>
            <user>weblogic</user>
            <password>weblogic</password>
            <work-manager>JettyWorkManager</work-manager>
            <concurrent-consumers>1</concurrent-consumers>
        </jms-adapter>
        ...
    </wlevs:config>
    
  10. 相関ソースとして機能するチャネルを作成します。

    ソースとして2番目の通常JMS入力アダプタを持つこのチャネルを構成する必要があります。

    例21-41は、ソースがJMSInboundAdapter2clusterCorrelatingOutstreamという名前の相関ソースを示します。

    例21-41 相関ソースの作成

    ...
        <wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
        </wlevs:adapter>
    
        <wlevs:channel id="clusterCorrelatingOutstream" event-type="StockTick" advertise="true">
            <wlevs:source ref="JMSInboundAdapter2"/>
        </wlevs:channel> 
    
  11. correlatedSourceを持つOracle CEPの高可用性相関出力アダプタを構成します。

    例21-38は、相関出力アダプタの構成を示し、ここではcorrelatedSourceclusterCorrelatingOutstreamになっています。

    例21-42 相関出力アダプタ: correlatedSource

    ...
        <wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
            <wlevs:listener ref="JMSOutboundAdapter"/>
            <wlevs:instance-property name="failOverDelay" value="2000"/>
            <wlevs:instance-property name="correlatedSource" value="clusterCorrelatingOutstream"/>
        </wlevs:adapter>
    ...
    

    詳細は、21.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

  12. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、相関出力アダプタのwarm-up-window-lengthを構成します。

    詳細は、次を参照してください:

  13. コンポーネント構成ファイルを構成し、例21-43で示すように、インバウンドJMSアダプタおよびアウトバウンドJMSアダプタのsession-transactedを有効にします。

    例21-43 インバウンド/アウトバウンド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">
        ...
        <jms-adapter>
            <name>JMSInboundAdapter</name>
            <jndi-provider-url>t3://localhost:7001</jndi-provider-url>
            <destination-jndi-name>./Topic1</destination-jndi-name>
            <user>weblogic</user>
            <password>weblogic</password>
            <work-manager>JettyWorkManager</work-manager>
            <concurrent-consumers>1</concurrent-consumers>
            <session-transacted>true</session-transacted>
        </jms-adapter>
    
        <jms-adapter>
            <name>JMSInboundAdapter2</name>
            <jndi-provider-url>t3://localhost:7001</jndi-provider-url>
            <destination-jndi-name>./Topic1</destination-jndi-name>
            <user>weblogic</user>
            <password>weblogic</password>
            <work-manager>JettyWorkManager</work-manager>
            <concurrent-consumers>1</concurrent-consumers>
            <session-transacted>true</session-transacted>
        </jms-adapter>
        ...
        <jms-adapter>
            <name>JMSOutboundAdapter</name>
            <event-type>JMSEvent</event-type>
            <jndi-provider-url>t3://localhost:7001</jndi-provider-url>
            <destination-jndi-name>Topic1</destination-jndi-name>
            <delivery-mode>nonpersistent</delivery-mode>
            <session-transacted>true</session-transacted>
        </jms-adapter>
        ...
    </wlevs:config>
    
  14. オプションで、コンポーネント構成ファイルを例21-27で示すように、Oracle CEPの高可用性入力アダプタおよび相関出力アダプタを含むように構成します。

    例21-44 高可用性入力/出力アダプタのコンポーネント構成ファイル

    <?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">
        ...
        <ha:ha-inbound-adapter>
            <name>myHaInputAdapter</name>
        </ha:ha-inbound-adapter>
        ...
        <ha:ha-correlating-adapter>
            <name>myHaBroadcastAdapter</name>
            <fail-over-delay>2000</fail-over-delay>
        </ha:ha-correlating-adapter>
        ...
    </wlevs:config>
    

    詳細は、次を参照してください:

  15. オプションで、ActiveActiveGroupBeanをEPNに追加し、スケーラビリティを向上します。

    詳細は、23.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」を参照してください。

  16. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。

    詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

    Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

21.2 高可用性アダプタの構成

チャネルやプロセッサなどのEPN内の他のコンポーネントを構成する方法と同様に、EPNアセンブリ・ファイルおよびコンポーネント構成ファイルでOracle CEPの高可用性アダプタを構成します。このような構成ファイルに関する一般情報は、次を参照してください。


注意:

Oracle CEPの高可用性の構成に変更を加えた後、Oracle CEPアプリケーションを再デプロイする必要があります。24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。


この項では、Oracle CEPの高可用性アダプタのそれぞれに関する構成可能なオプションを次のような内容で説明します。

21.2.1 高可用性入力アダプタの構成方法

Oracle CEPの高可用性ブロードキャスト出力アダプタは、BroadcastInputAdapterによって実装されます。

この項では、Oracle CEPの高可用性入力アダプタの構成方法を次のような内容で説明します。

詳細は、20.1.3.1項「高可用性入力アダプタ」を参照してください。

21.2.1.1 高可用性入力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性入力アダプタを宣言するためのルート要素は、例21-45で示されるように、provider要素をha-inboundに設定したwlevs:adapterです。例21-45で示されるように、実際の入力アダプタでOracle CEPの高可用性入力アダプタのwlevs:listener要素を指定します。

例21-45 高可用性入力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="jmsAdapter" provider="jms-inbound"
    <wlevs:listener ref="myHaInputAdapter"/>      
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound">
    <wlevs:instance-property name="keyProperties" value="id"/>
    <wlevs:instance-property name="timeProperty" value="arrivalTime"/>
    <wlevs:instance-property name="eventType" value="MyEventType"/>
</wlevs:adapter>

<wlevs:channel id="inputChannel" event-type="MyEventType ">
    <wlevs:source ref="myHaInputAdapter"/>
    <wlevs:application-timestamped>
        <wlevs:expression>arrivalTime</wlevs:expression>
    </wlevs:application-timestamped>
</wlevs:channel>

表21-1は、Oracle CEPの高可用性入力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-1 高可用性入力アダプタ用wlevs:adapterの子要素

子要素 説明

wlevs:instance-property

表21-2で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。


表21-2は、Oracle CEPの高可用性入力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-2 高可用性入力アダプタのインスタンス・プロパティ

名前

timeProperty

高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティ名を指定します。

これは、例21-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントのwlevs:application-timestamped要素で使用するプロパティと同一です。

keyProperties

Oracle CEPの高可用性入力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

eventType

Oracle CEPの高可用性入力アダプタが実際の入力アダプタから受信するイベントの種類名を指定します。これは、例21-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントで使用するイベント型と同一です。

タプル・イベントの場合、このプロパティは必須です。

すべての他のJavaクラス・ベースのイベント型の場合、このプロパティはオプションです。

詳細は、1.1.2項「Oracle CEPイベント・タイプ」を参照してください。


21.2.1.2 高可用性入力アダプタのコンポーネント構成ファイルの構成

Oracle CEPの高可用性入力アダプタの構成用ルート要素は、ha-inbound-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-46 高可用性入力アダプタのコンポーネント構成ファイル

<ha:ha-inbound-adapter>
    <name>myHaInputAdapter</name>
    <heartbeat units="millis">1000</heartbeat>
    <batch-size>10</batch-size>
</ha:ha-inbound-adapter>

表21-3は、Oracle CEPの高可用性入力アダプタに構成できるha-inbound-adapterの追加子要素を説明します。

表21-3 高可用性入力アダプタ用ha-inbound-adapterの子要素

子要素 説明

heartbeat

unitsの整数の数として時間を進めるためのハートビート・イベントを生成する前に、Oracle CEPの高可用性入力アダプタが待機できる時間の長さを指定します。

units属性の有効な値:

  • nanos: 指定されたナノ秒数を待機します。

  • millis: 指定されたミリ秒数を待機します。

  • secs: 指定された秒数を待機します。

デフォルト: ハートビートが送信されません。

batch-size

プライマリがセカンダリにブロードキャストする各タイミング・メッセージにおいてイベント数を指定します。nの値は、n{key, time}のペアが各メッセージに送信されるという意味になります。このプロパティをパフォーマンスの調整に使用できます(27.2.3項「高可用性入力アダプタの構成」を参照)。

デフォルト: 1 (バッチを無効化)。


21.2.2 バッファリング出力アダプタの構成方法

Oracle CEPの高可用性バッファリング出力アダプタは、SlidingWindowQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性バッファリング出力アダプタの構成方法を次のような内容で説明します。

詳細は、20.1.3.2項「バッファリング出力アダプタ」を参照してください。

21.2.2.1 バッファリング出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性バッファリング出力アダプタを宣言するためのルート要素は、例21-47で示されるように、provider要素をha-bufferingに設定したwlevs:adapterです。

例21-47 バッファリング出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="mySlidingWindowingAdapter" provider ="ha-buffering">
    <wlevs:listener>
        <bean class="com.bea.wlevs.example.cluster.ClusterAdapterBean"/>
    </wlevs:listener>
    <wlevs:instance-property name="windowLength" value="15000"/>
</wlevs:adapter>

表21-4は、Oracle CEPの高可用性バッファリング出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-4 バッファリング出力アダプタ用wlevs:adapterの子要素

子要素 説明

wlevs:listener

Oracle CEPの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-5で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。


表21-5は、Oracle CEPの高可用性ブロードキャスト出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-5 バッファリング出力アダプタのインスタンス・プロパティ

名前

windowLength

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000


21.2.2.2 バッファリング出力アダプタ・コンポーネント構成ファイルの構成

Oracle CEPの高可用性バッファリング出力アダプタの構成用ルート要素は、ha-buffering-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-48で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-48 バッファリング出力アダプタのコンポーネント構成ファイル

<ha:ha-buffering-adapter >
    <name>mySlidingWindowingAdapter</name>
    <window-length>15000</window-length>
    <warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-buffering-adapter >

表21-6は、Oracle CEPの高可用性バッファリング出力アダプタに構成できるha-buffering-adapterの追加子要素を説明します。

表21-6 バッファリング出力アダプタ用ha-buffering-adapterの子要素

子要素 説明

window-length

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

  • seconds: 指定された秒数を待機します。

  • minutes: 指定された分数を待機します。

デフォルト: unitseventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。


21.2.3 ブロードキャスト出力アダプタの構成方法

Oracle CEPの高可用性ブロードキャスト出力アダプタは、クラスGroupBroadcastQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性ブロードキャスト出力アダプタの構成方法を次のような内容で説明します。

詳細は、20.1.3.3項「ブロードキャスト出力アダプタ」を参照してください。

21.2.3.1 ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性ブロードキャスト出力アダプタを宣言するためのルート要素は、例21-49で示されるように、provider要素をha-broadcastに設定したwlevs:adapterです。

例21-49 ブロードキャスト出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="myBroadcastAdapter" provider="ha-broadcast">
    <wlevs:listener ref="actualAdapter"/>
    <wlevs:instance-property name="keyProperties" value="time"/>
    <wlevs:instance-property name="monotonic" value="true"/>
</wlevs:adapter>

表21-7は、Oracle CEPの高可用性ブロードキャスト出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-7 ブロードキャスト出力アダプタ用wlevs:adapterの子要素

子要素 説明

wlevs:listener

Oracle CEPの高可用性ブロードキャスト出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-8で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。


表21-8は、Oracle CEPの高可用性ブロードキャスト出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-8 ブロードキャスト出力アダプタのインスタンス・プロパティ

名前

keyProperties

Oracle CEPの高可用性ブロードキャスト出力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

複合キーは、monotonicおよびtotal-orderになることがあります。

monotonic

キーの値が(時間値のように)常に増加するかどうかを指定します。

有効な値:

  • true: キーは常に増加します。

  • false: キーは常に増加しません。

デフォルト: false

total-order

イベント・キーが一意であるかどうか指定します。インスタンス・プロパティmonotonictrueに設定されている場合のみ適用できます。

有効な値:

  • true: イベント・キーは一意です。

  • false: イベント・キーは一意ではありません。

デフォルト: true


21.2.3.2 ブロードキャスト出力アダプタのコンポーネント構成ファイルの構成

Oracle CEPの高可用性ブロードキャスト出力アダプタの構成用ルート要素は、ha-broadcast-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-50 ブロードキャスト出力アダプタのコンポーネント構成ファイル

<ha:ha-broadcast-adapter>
    <name>myBroadcastAdapter</name>
    <trimming-interval units="events">10</trimming-interval>
    <warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-broadcast-adapter>

表21-9は、Oracle CEPの高可用性ブロードキャスト出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表21-9 ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素

子要素 説明

trimming-interval

トリミング・メッセージがunitsの整数の数としてブロードキャストされる間隔を指定します。このプロパティをパフォーマンスの調整に使用できます(27.2.4項「ブロードキャスト出力アダプタの構成」を参照)。

units属性の有効な値:

  • events: 指定されたミリ秒数の後に、トリミング・メッセージをブロードキャストします。

  • millis: 指定されたイベント数の処理後に、トリミング・メッセージをブロードキャストします。

デフォルト: unitseventsです。

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

  • seconds: 指定された秒数を待機します。

  • minutes: 指定された分数を待機します。

デフォルト: unitseventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。


21.2.4 相関出力アダプタの構成方法

Oracle CEPの高可用性相関出力アダプタは、クラスCorrelatedQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性相関出力アダプタの構成方法を次のような内容で説明します。

詳細は、20.1.3.4項「相関出力アダプタ」を参照してください。

21.2.4.1 相関出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性相関出力アダプタを宣言するためのルート要素は、例21-51で示されるように、provider要素をha-correlatingに設定したwlevs:adapterです。

例21-51 相関出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="myCorrelatingAdapter" provider="ha-correlating">
    <wlevs:listener>
        <bean class="com.bea.wlevs.example.cluster.ClusterAdapterBean"/>
    </wlevs:listener>
    <wlevs:instance-property name="correlatedSource" ref="clusterCorrOutstream"/>
    <wlevs:instance-property name="failOverDelay" value="2000"/>
</wlevs:adapter>

表21-10は、Oracle CEPの高可用性相関出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-10 相関出力アダプタ用wlevs:adapterの子要素

子要素 説明

wlevs:listener

Oracle CEPの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-11で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。


表21-11は、Oracle CEPの高可用性相関出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-11 相関出力アダプタのインスタンス・プロパティ

名前

correlatedSource

相関対象のイベント・ソースを指定します。このソースから参照されるイベントは、トリミング・キューからパージされます。フェイルオーバーときにキュー内に留まるイベントは再生されます。

failOverDelay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。


21.2.4.2 相関出力アダプタのコンポーネント構成ファイルの構成

Oracle CEPの高可用性相関出力アダプタの構成用ルート要素は、ha-correlating-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-52で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-52 相関出力アダプタのコンポーネント構成ファイル

<ha:ha-correlating-adapter>
    <name>myCorrelatingAdapter</name>
    <window-length>15000</window-length>
    <warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-correlating-adapter>

表21-12は、Oracle CEPの高可用性相関出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表21-12 相関出力アダプタ用ha-correlating-adapterの子要素

子要素 説明

fail-over-delay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

  • seconds: 指定された秒数を待機します。

  • minutes: 指定された分数を待機します。

デフォルト: unitseventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。