近年、電子商取引アプリケーション(SOA)では、緩く結合されたシステムの重要性が増しています。 このタイプのシステムにとって、信頼性の高いメッセージングは重要なテクノロジとなります。
Reliable RPC は、信頼性の高いメッセージングシステムを Natural RPC で実装するものです。 Reliable RPC は Natural RPC のテクノロジと持続性を兼ね備えており、EntireX Broker によって提供される作業単位(UOW)を使用して実装されます。 Reliable RPC の特徴は次のとおりです。
Natural RPC クライアントは、サーバーからの応答を待たずに CALLNAT
ステートメントを実行します(RPC メッセージは非同期モードで送信される)。
CALLNAT
が実行されたときに RPC サーバーがアクティブである必要はありません。
Reliable RPC メッセージは、RPC サーバーが利用可能になるまで Broker のパーシスタントストアに格納されます。
Natural RPC サーバーは、要求されたサブプログラムをコールして Reliable RPC を実行しますが、RPC クライアントに応答を送信しません。
Natural RPC クライアントは、送信済みの Reliable RPC メッセージのステータスを要求できます。
Natural RPC クライアントは、Reliable RPC メッセージを EntireX RPC サーバーに送信できます。
Natural RPC サーバーは、Reliable RPC メッセージを EntireX RPC クライアントから受信できます。
Reliable RPC 対応の Natural RPC クライアントは、通常の Natural RPC の場合と同じように構成します。 同じ Natural RPC クライアントセッションで、普通の RPC 要求も Reliable RPC メッセージも送信できます。
Natural RPC クライアントで Reliable RPC を使用できるようにするには、Natural RPC クライアントでアプリケーションプログラミングインターフェイス USR2071N
を使用して、明示的な EntireX Broker ログオンに対応する必要があります。 したがって、RPC
/NTRPC
キーワードサブパラメータ ACIVERS
を 2
以上に設定する必要があります。
Reliable RPC は、EntireX Broker のパーシスタントサービスにメッセージを送信するために使用されます。 メッセージは呼び出し元の PDA によって記述され、出力パラメータのみが含まれます。 パラメータは、次のいずれかの方法で "出力" として定義されます。
Natural スタブサブプログラム(インターフェイスオブジェクト)が使用される場合:
SYSRPC
ユーティリティの[Stub Generation]画面の Attr
フィールドで、パラメータの属性を O
(出力)に設定します。
Natural スタブサブプログラムが使用されない場合:
Natural スタブサブプログラムを IDL ファイルから作成する場合、パラメータの属性は IDL ファイルから取得されます。 この場合、IDL ファイルには(クライアントにとっての)受信パラメータのみ含まれていることが必要です。
Reliable RPC はランタイムに有効になります。 クライアントは、Reliable RPC 要求を発行する前に、次のいずれかのモードを設定する必要があります。
AUTO_COMMIT
CLIENT_COMMIT
AUTO_COMMIT
モードでは各メッセージが送信後に暗黙でコミットされる一方、CLIENT_COMMIT
モードでは、1 つの作業単位(UOW)の形で送信される一連の RPC メッセージを明示的にコミットまたはロールバックできます。
この目的のため、Natural には 2 つのアプリケーションプログラミングインターフェイス USR6304N
および USR6305N
が用意されています。 インターフェイス USR6304N
を使用すると、Reliable RPC のモードが設定されます。 インターフェイス USR6305N
を使用すると、CLIENT_COMMIT
で作成された作業単位をコミットまたはロールバックできます。
USR6304N
を使用するには
サブプログラム USR6304N
を、ライブラリ SYSEXT
から、ライブラリ SYSTEM
、steplib ライブラリ、またはクライアント環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | I/O | フォーマット | 説明 | |
---|---|---|---|---|
P-FUNC |
I | A01 | ファンクションコード。設定可能値は次のとおりです。 | |
P (Put)
|
Reliable RPC のモードを設定します。 このモードはその後すべてのコールに適用されます。 | |||
G (Get)
|
以前指定されたモードを取得します。 | |||
P-MODE |
I/O | N01 | Reliable RPC のモード: | |
0 |
非 Reliable RPC(普通の RPC 実行) | |||
1 |
Reliable RPC AUTO_COMMIT |
|||
2 |
Reliable RPC CLIENT_COMMIT |
|||
P-RC |
O | N04 | リターンコード | |
P-MESSAGE |
O | A80 | メッセージテキスト |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR6304N' P-FUNC P-MODE P-RC P-MESSAGE
注意:
Reliable RPC メッセージが送信されたがまだコミットまたはロールバックされていない場合、モード CLIENT_COMMIT
は変更できません。
USR6305N
を使用するには
サブプログラム USR6305N
を、ライブラリ SYSEXT
から、ライブラリ SYSTEM
、steplib ライブラリ、またはクライアント環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | I/O | フォーマット | 説明 | |
---|---|---|---|---|
P-FUNC |
I | A08 | ファンクションコード。設定可能値は次のとおりです。 | |
COMMIT |
送信された Reliable RPC メッセージをコミットします。 これによりこのメッセージは RPC サーバーで使用できるようになります。 | |||
ROLLBACK |
送信済みの Reliable RPC メッセージを破棄します。 | |||
P-RC |
O | N04 | リターンコード | |
P-MESSAGE |
O | A80 | メッセージテキスト |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR6305N' P-FUNC P-MODE P-RC P-MESSAGE
Reliable RPC 対応の Natural RPC サーバーは、通常の Natural RPC の場合と同じように構成します。 同じ Natural RPC サーバーセッションで、普通の RPC 要求も Reliable RPC メッセージも処理できます。
Reliable RPC メッセージの処理を有効にするには、RPC
/NTRPC
キーワードサブパラメータ ACIVERS
を 2
以上に設定する必要があります。
送信済みの Reliable RPC メッセージのステータスを表示するため、Natural にはアプリケーションプログラミングインターフェイス USR6306N
が用意されています。 USR6306N
を使用すると、自分のユーザー ID で以前送信したすべての Reliable RPC メッセージのステータスを取得できます。 USR6306N
は、Reliable RPC メッセージが送信された Natural セッションでコールすることが必須というわけではありません。 USR6306N
が他の Natural セッションで使用された場合、まずアプリケーションプログラミングインターフェイス USR2071N
を使用して、Reliable RPC メッセージの送信に使用されたものと同じユーザー ID で EntireX Broker にログインする必要があります。
Reliable RPC メッセージは、EntireX Broker 作業単位(UOW)によって実装されます。 したがって、Reliable RPC メッセージに関する情報は、UOW に関する情報になります。
USR6306N
を使用するには
サブプログラム USR6306N
を、ライブラリ SYSEXT
から、ライブラリ SYSTEM
、steplib ライブラリ、またはクライアント環境の任意のアプリケーションにコピーします。
DEFINE DATA PARAMETER
ステートメントを使用して、次のパラメータを指定します。
パラメータ | I/O | フォーマット | 説明 |
---|---|---|---|
P-UOW-ID-IN |
I | A16 | 取得する UOW の ID。 可能な値は次のとおりです。
UOW の UOWID
|
P-USER-ID |
O | A32 | UOW を作成したユーザーのユーザー ID。 |
P-BROKER-ID |
O | A32 | UOW をホストする EntireX Broker の Broker ID。 |
P-UOW-COUNT |
O | I4 | P-UOW-INFO 配列内の UOW 数。
|
P-UOW-INFO (/1:*) |
各 UOW に関する情報を含む X-array | ||
P-UOW-ID |
O | A32 | UOW の ID |
P-UOW-STATUS |
O | A10 | EntireX Broker にとっての UOW のステータス
このステータスは処理状態に応じて変わり、EntireX Broker によって指定されます。 |
P-USERR-STATUS |
O | A32 | UOW に関するユーザー情報。
通常は、RPC サーバーによって設定されたエラー情報です。 |
P-CREATE-TIME |
O | A32 | EntireX Broker にとっての UOW の作成時刻。 |
P-RC |
O | N04 | リターンコード |
P-MESSAGE |
O | A80 | メッセージテキスト |
クライアント側の呼び出し元プログラムで、次のステートメントを指定します。
CALLNAT 'USR6306N' P-UOW-ID-IN P-USER-ID P-BROKER-ID P-UOW-COUNT P-OUW-INFO(*) P-RC P-MESSAGE