共通APIは、サービス利用側アプリケーションを開発する場合に使用します。
定義を書き換えるだけで、それぞれのプロトコルでメッセージを送受信できます。
メッセージ送受信API
メッセージ送受信APIには、以下の種類があります。
送信API
受信API
ローカルDBとのトランザクション用送信API
ローカルDBとのトランザクション用受信API
送信APIと受信APIは、以下のプロトコルでの送受信をサポートしています。
SOAPのRPC機能(JAX-RPC)(非同期送信、非同期受信、同期通信)
JMS(非同期送信、非同期受信)
JMS-R(非同期送信、非同期受信)
RMI(同期通信)
ローカルDBとのトランザクション用送信APIとローカルDBとのトランザクション用受信APIは、以下のプロトコルでの送受信をサポートしています。
JMS-R(非同期送信、非同期受信)
以下のプロトコルでの受信において、キューにメッセージが存在しなかった場合、API発行からメッセージが格納されるまで、処理を一時停止できます。
JMS-R(非同期受信)
送信APIと受信APIはプロトコルごとに区別されていません。定義に記述されている内容でプロトコルを判別します。
注意
SOAPのメッセージング機能を利用する場合は、ISIのメッセージ送受信APIを使用せずにSOAPメッセージを作成します。
またJAX-RPCで、スタブを使用する場合もメッセージ送受信APIを使用しません。
共通メッセージ操作API
共通メッセージ操作APIは、サービス利用側アプリケーションを開発する場合に使用します。
共通メッセージの生成、値の取得、値の設定を行います。
共通メッセージの詳細については、“2.5.3 クラスタリングへの対応”を参照してください。
ローカルDBとのトランザクション機能
JMS-R使用時に、APIと同じサーバ内の利用者の業務データベース(ローカルDB)と、キューを同時に更新します。
図A.1 ローカルDBとトランザクション
データベースとキューを同時に更新すると、別サーバの業務データベースと連携するケースなどで、信頼性を向上できます。
ローカルDBとのトランザクション機能を利用すると、以下の問題が解決できます。
業務データベースの更新に失敗した場合(他サーバへの送信)
自サーバの業務データベースの更新が失敗していたが、相手サーバに更新情報を送信してしまった。
図A.2 更新失敗時の問題(他サーバへの送信)
キューへの格納と同じタイミングで、業務データベースを更新(同時コミット)します。片方の処理に失敗した場合は、両方とも元に戻します(ロールバック)。
図A.3 更新失敗時の対応(他サーバへの送信)
業務データベースの更新に失敗した場合(他サーバからの送信)
相手サーバからの更新情報を受信したが、更新情報を削除したあとに、自サーバの業務データベースの更新失敗が判明した。
図A.4 更新失敗時の問題(他サーバからの受信)
キューからメッセージを取り出し、業務データベースの更新と同じタイミングでキューからメッセージを削除(同時コミット)します。片方の処理が失敗した場合は、両方とも元に戻します(ロールバック)。
図A.5 更新失敗時の対応(他サーバからの受信)
注意
キューがJMS-Rの場合だけ、この機能を利用できます。
利用者の業務データベースがSymfoware Serverの場合だけ、この機能を利用できます。
業務データベースとキューは、同一データベースにしてください。
メッセージ送信API実行時のメッセージ保証機能
JMS-R利用時に、通信やデータベースなどの問題でキューに書き込むことができなかった場合、送信メッセージを退避用JMSキューに退避できます。エラーを回避したあとに、リカバリコマンドを使って、退避したメッセージをJMS-Rのキューに戻すことができます。
図A.6 メッセージの退避
図A.7 メッセージのリカバリ
退避用JMSキューにメッセージを退避中は、エラーが回復しても、JMS-Rのキューに書き込まれることはありません。リカバリコマンドを実行し、退避用JMSキュー内のメッセージがなくなった時点で、JMS-Rのキューへ書込みを再開します。
また、退避したメッセージをバックアップするコマンドもあります。コマンドについては、“ISI 運用ガイド”を参照してください。