ポーリングのパフォーマンスを改善する
インターフェーステーブルのポーリング処理を高度に設定することで、インターフェーステーブルからのデータ読み取りパフォーマンスを向上させることができます。
インタフェーステーブルのポーリングパフォーマンスを改善する措置が必要となるのは、連続キューにインバウンドトランザクションを送信し、トランザクションを先入れ先出し順に維持する必要がない場合のみです。
特に指定のない限り、構成作業はシステム構成モジュールのCronタスク設定アプリケーションで行います。
セレクタを使用して、 WHERE 節をcronタスクに追加します。 cronタスクの複数のインスタンスを定義する場合は、各インスタンスが相互に排他的なインターフェーステーブルの行を読み込むようにセレクタを定義する必要があります。 例えば、2つの外部システムとデータを交換する場合、最初のスレッドが1つのシステムをポーリングし、2番目のスレッドが2番目のシステムをポーリングする可能性があります。
セレクタは、Cron Task Setup アプリケーションの EXTSYSNAME (外部システム)および ENTERPRISESERVICE (エンタープライズサービス)パラメータに値を割り当てることで定義します。 パイプで区切った値のセットを入力することで、セレクタにIN句を追加することができます。
キューテーブルからシステム EXTSYS1 用の購入注文レコードのみを選択して、cronタスクを実行するには:
- セット ENTERPRISESERVICE=MXPOInterface
- セット EXTSYSNAME=EXTSYS1
ENTERPRISESERVICE プロパティに複数のインターフェース名をリストするには、 ENTERPRISESERVICE=MXPOInterface|GeoInterface|... を設定します。
以下は、cronタスクの複数のインスタンスを設定するための要件です
- セレクタは相互に排他的でなければならず、メッセージが複数回処理されることがないようにしなければなりません。
- セレクタは、未処理のメッセージが残らないように、使用しているすべてのエンタープライズサービストランザクションを取得する必要があります。
クーロン・タスク
インタフェーステーブルポーリングプロセスは、IFACETABLECONSUMERと呼ばれる単一のデフォルトのcronタスクを使用します。 このcronタスクは、テーブルに書き込みを行うすべての外部システムに関するすべてのインターフェーステーブルからすべてのトランザクションを読み取ります。
シングルサーバーおよびマルチサーバーのパフォーマンスを向上させるには、このタスクの複数のインスタンスを異なるプロパティ値で定義することにより、マルチスレッドのインターフェーステーブルポーリングを設定することができます。 マルチスレッドポーリングは、クラスタ構成で実行される場合に便利です。異なるスレッドを異なるサーバー上で実行し、負荷を分散させることができるためです。
例えば、特定のアプリケーションサーバー上で実行するcronタスクのインスタンスを指定するには、以下の操作を行います。 cron タスクのインスタンス名は instance1:
Cron Task Setup アプリケーションで、 TARGETENABLED プロパティを 1 に設定します。 server1 のセットアップでは、 –DIFACETBCONSUMER.instance1=1 を設定します。
複数のcronタスクを実装する際には、トランザクションが複数回処理されることを避けるために、排他的なセレクタも実装する必要があります。
セレクター
セレクタを使用して、 WHERE 節をcronタスクに追加します。 cronタスクの複数のインスタンスを定義する場合は、各インスタンスが相互に排他的なインターフェーステーブルの行を読み込むようにセレクタを定義する必要があります。 例えば、2つの外部システムとデータを交換する場合、最初のスレッドが1つのシステムをポーリングし、2番目のスレッドが2番目のシステムをポーリングする可能性があります。
セレクタは、Cron Task Setup アプリケーションの EXTSYSNAME (外部システム)および ENTERPRISESERVICE (エンタープライズサービス)パラメータに値を割り当てることで定義します。 パイプで区切った値のセットを入力することで、セレクタにIN句を追加することができます。
キューテーブルからシステム EXTSYS1 の購買注文レコードのみを選択するよう、cronタスクを指示するには、以下の作業を行います
- ENTERPRISESERVICE=MXPOInterfaceを設定します。
- EXTSYSNAME=EXTSYS1を設定します。
ENTERPRISESERVICE プロパティに複数のインターフェース名をリストするには、 ENTERPRISESERVICE=MXPOInterface|MXPRInterface|… を設定します。
以下は、cronタスクの複数のインスタンスを設定するための要件です
- セレクタは相互に排他的でなければならず、メッセージが複数回処理されることがないようにしなければなりません。
- セレクタは、未処理のメッセージが残らないように、使用しているすべてのエンタープライズサービストランザクションを取得する必要があります。