イベント処理

イベント通知では、アダプターは、WebSphere Commerce がキューに書き込んだイベントを検出します。

検索

アダプターは、pollForEvents() メソッドを使用して、一定の間隔でキューをポーリングしてメッセージを検索します。メッセージが見つかると、アダプターはキューからそのメッセージを取得し、調べて、フォーマットを判断します。フォーマットがアダプターの静的メタオブジェクトで定義されている場合、アダプターはメッセージ本体と、そのフォーマットに関連付けられているビジネス・オブジェクトの新しいインスタンスの両方を、構成されているデータ・ハンドラーに渡します。データ・ハンドラーでは、ビジネス・オブジェクトが生成されて、動詞が指定されるはずです。フォーマットが静的メタオブジェクトで定義されていない場合は、アダプターはメッセージ本体だけをデータ・ハンドラーに渡します。データ・ハンドラーでは、そのメッセージに対する適正なビジネス・オブジェクトが判別され、作成され、生成されるはずです。イベント障害のシナリオについては、"エラー処理"を参照してください。

アダプターは、メッセージを処理するときに、まず入力キューに対するトランザクション・セッションを開きます。このトランザクション方法では、わずかですが、アダプターがビジネス・オブジェクトを正常に実行依頼しても、キューにトランザクションをコミットできないと、ビジネス・オブジェクトがコラボレーションに 2 回引き渡される可能性があります。この問題を回避するため、アダプターはすべてのメッセージを処理中キューに移動します。処理が完了するまで、メッセージはそこに保持されます。アダプターが処理中に予想外のシャットダウンを起こしても、メッセージは処理中キューに残り、オリジナルの入力ファイルに復元されることはありません。

注:
WebSphere MQ を使ったトランザクション・セッションでは、キュー上の要求アクションがすべて実行され、コミットされた後で、キューからイベントを除去する必要があります。したがって、アダプターは、キューからメッセージを取得するとき、次の 3 つの条件のいずれかが発生するまで、その取得をコミットしません。1) メッセージがビジネス・オブジェクトに変換される 2) ビジネス・オブジェクトが gotApplEvents() メソッドによって InterChange Server Express に引き渡される 3) 戻り値を受け取る。

リカバリー

初期化時に、アダプターは、処理中キュー内にコネクターのシャットダウンなどが原因で処理が完全に終了していないメッセージがないかどうかを確認します。コネクター構成プロパティー InDoubtEvents で、このようなメッセージのリカバリーを処理する 4 つのオプション (「始動時に異常終了 (fail on startup)」、「再処理 (reprocess)」、「無視 (ignore)」、または「ログ・エラー (log error)」) のいずれかを指定することができます。

始動時に異常終了 (fail on startup)

「始動時に異常終了 (fail on startup)」オプションを指定した場合、初期化時に処理中キュー内にメッセージが見つかると、アダプターはエラーをログに記録して、即時にシャットダウンします。メッセージを調べて、これらのメッセージを完全に削除するか、別のキューに移動するか、どちらか適切なアクションを取ることは、ユーザーまたはシステム管理者の責任となります。

再処理 (reprocess)

「再処理 (reprocessing)」オプションを指定した場合、初期化時に処理中キュー内にメッセージが見つかると、アダプターは次のポーリング時にまずこれらのメッセージを処理します。処理中キュー内のメッセージの処理がすべて終了したら、アダプターは入力キューのメッセージの処理を開始します。

無視 (ignore)

「無視 (ignore)」オプションを指定した場合、初期化時に処理中キュー内にメッセージが見つかると、アダプターはそれらを無視します。ただし、シャットダウンはしません。

ログ・エラー (log error)

「ログ・エラー (log error)」オプションを指定した場合、初期化時に処理中キュー内にメッセージが見つかると、アダプターはエラーをログに記録します。ただし、シャットダウンはしません。

アーカイブ

コネクター・プロパティー ArchiveQueue で、有効なキューが指定されている場合、アダプターは、正常に処理されたすべてのメッセージのコピーをアーカイブ・キューに入れます。ArchiveQueue が定義されていない場合は、メッセージは処理後に廃棄されます。アンサブスクライブされたメッセージやエラーが発生したメッセージのアーカイブについては、エラー処理を参照してください。

注:
JMS 規則により、取得したメッセージを即時に別のキューに発行することはできません。メッセージのアーカイブと再引き渡しを実現するためには、アダプターはまずオリジナル・メッセージの本体とヘッダー (該当する場合) を複製した 2 つ目のメッセージを作ります。WebSphere Commerce メッセージング・サービスとの競合を避けるため、JMS に必要なフィールドだけが複製されます。したがって、フォーマット・フィールドが、アーカイブまたは再引き渡しされるメッセージについてコピーされる唯一の追加メッセージ・プロパティーです。

Copyright IBM Corp. 2004