Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第12章 イベントサービス運用時の異常 |
イベントサービスでコンシューマアプリケーション運用中に異常が発生した場合、発生したタイミングにより対処を行う必要があります。また、対処方法は、コンシューマアプリケーションが接続情報を保存している場合としていない場合で異なります。それぞれについて説明します。
イベントチャネルは、イベントデータ待ち合わせ中のコンシューマアプリケーションが異常終了しても、イベントチャネル内ではproxyのイベントデータの待ち合わせ状態が解除されず、サプライヤからイベントデータが送信されるまで、またはイベントデータの待ち合わせ時間まで、イベントデータを待ち合わせます。そのため、コンシューマアプリケーションの再起動後に、同一proxyで受信処理を行った場合は、イベントチャネル内でpullメソッドまたはpull_waitメソッドが2重に発行されることになり、以下の例外が返される可能性があります。
システム例外:BAD_PARAM
マイナーコード:0x464a09e5
この場合、pull_cancelメソッドを発行し、イベントデータの待ち合わせ状態を解除した後に、pullメソッドおよびpull_waitメソッドを発行してください。
トランザクション運用中のアプリケーションが異常終了しても、イベントチャネルはトランザクションのタイムアウト時間までトランザクション処理中です。そのため、受信済みのイベントデータを再度受信する場合は、必ずrollbackメソッドを発行後にbeginメソッドを発行して再度トランザクション処理を行ってください。
なお、トランザクション処理中にdisconnectメソッドを発行した場合、イベントチャネルは自動的にcommit処理を実行します。
Point-To-Pointモデルの運用等において、コンシューマアプリケーションが接続情報を保存せず、コンシューマ起動ごとにproxyを作成してローカルトランザクションを実施している場合は、以下のいずれかの操作を行うことで、トランザクションタイムアウトの検出が早くなり、前回受信したデータ(トランザクションが完了していない状態のデータ)を早く受信することができます。
なお、イベントチャネルの不揮発運用中の場合は、トランザクションタイムアウトの検出を待たずに、イベントチャネルの再起動を行うことにより、ローカルトランザクションは解除され、前回受信したイベントデータを復元することができます。
目次
索引
![]() ![]() |