ee_mch_cmtsend_sync【XTC限定】
- 〈このページの構成〉
形式
ANSI C,C++の形式
#include <eemch.h> int ee_mch_cmtsend_sync(char *group, char *service, char *in, EEULONG *in_len, EEULONG priority, EELONG flags)
機能
トランザクションのコミットが確定したとき,トランザクション処理と同じスレッドから一方送信メッセージをUDPプロトコルで送信します。これによって,SPPに対してサービスを要求します。トランザクションがロールバックとなった場合,メッセージは破棄されます。
サービスを要求するときには,「サービスグループ名」および「サービス名」を引数に設定します。この名称に該当するサービス関数へサービスが要求されます。
この関数を使う場合,サーバUAPがあるノードのTP1/EEが稼働していることが前提です。
UAPで値を設定する引数
●group
SPPのサービスグループ名を,31バイト以内のアスキー文字列で設定します。
文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。
●service
SPPのサービス名を,31バイト以内のアスキー文字列で設定します。文字列の最後にはNULL文字を設定してください。このNULL文字は文字列の長さに数えません。
●in
サービスの入力パラメタを設定します。
●in_len
サービスの入力パラメタ長を設定します。1〜EEMCH_MAX_MESSAGE_SIZE※の範囲の値を設定できます。EEMCH_MAX_MESSAGE_SIZEは,eemch.hで定義してあります。
- 注※
-
EEMCH_MAX_MESSAGE_SIZEの値は,将来拡張される場合があります。
●priority
メッセージ送信先で登録された処理キューの中で優先的に起動するかどうかを設定します。
- EEMCH_HI
-
優先的に起動します。
- EEMCH_LOW
-
優先的に起動しないで,登録した順序で起動します。
●flags
メッセージ送信形態とオプションを次に示す形式で設定します。
{EENOFLAGS|EEMCH_MULTI_CL|EEMCH_MYPROC}〔|EEMCH_PERMANENCE〕
- EENOFLAGS
-
ユニキャストで一方送信メッセージを送信する場合に設定します。
- EEMCH_MULTI_CL
-
マルチキャストでCLサーバに一方送信メッセージを送信する場合に設定します。
- EEMCH_MYPROC
-
自プロセスあてに一方送信メッセージを送信する場合に設定します。
- EEMCH_PERMANENCE
-
メッセージを永続属性とする場合に設定します。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
正常に終了しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
EEMCHER_CONDITION |
発行条件が不正です。 |
EEMCHER_MEMORY_SHORT |
メモリが不足しました。 |
EEMCHER_MESSAGE_TOO_BIG |
in_lenに設定した入力パラメタ長が,最大値を超えています。 |
EEMCHER_NO_SUCH_SERVICE |
serviceに設定したサービス名は,定義されていません。 |
EEMCHER_NO_SUCH_SERVICE_GROUP |
groupに設定したサービスグループ名は,定義されていません。 |
EEMCHER_OTQ_SHUT_DOWN |
出力キュー(OTQ)が閉塞中,または閉塞解除処理中です。 |
EEMCHER_PARAM_FLAGS |
flagsに設定した値が間違っています。 |
EEMCHER_PARAM_GROUP |
groupに設定した値が間違っています。 |
EEMCHER_PARAM_IN |
inに設定した値が間違っています。 |
EEMCHER_PARAM_IN_LEN |
in_lenに設定した値が間違っています。 |
EEMCHER_PARAM_PRIORITY |
priorityに設定した値が間違っています。 |
EEMCHER_PARAM_SERVICE |
serviceに設定した値が間違っています。 |
EEMCHER_SYSERR |
システムエラーが起こりました。 |
ee_mch_cmtsend_sync関数がエラーになる場合
ee_mch_cmtsend_sync関数がエラーリターンする場合について説明します。
クラスタ連携関連定義のcluster_modeオペランドにYを指定している場合
ee_mch_cmtsend_sync関数はEEMCHER_CONDITIONのリターン値でエラーリターンします。その他の理由については,ee_mch_cmtsend関数の説明を参照してください。
注意事項
-
設定するサービスグループ名およびサービス名は,サーバUAPの環境設定で指定しておいてください。
-
メッセージ送信時にエラーが発生した場合,高速メッセージ送信関連定義のmch_send_retry_countオペランドに従い,再送信します。再送信がエラーとなった場合は,ERRTRNS※を起動してメッセージを破棄します。ただし,要求元のトランザクションがエラートランザクションの場合,ERRTRNSは起動されません。
- 注※
-
高速メッセージ送信関連定義のmch_send_err_rollbackオペランドでYを指定した場合は,ERRTRNRが起動されます。ただし,要求元のトランザクション種別がMNまたはTM以外の場合,ERRTRNRは起動されません。
-
CLサーバでは使用できません。
-
メッセージ送信は,自プロセスあてを含めUDP用送信バッファ(UOBF)を使用します。
-
高速メッセージ送信関連定義のmch_send_err_rollbackオペランドでYを指定した場合は,自プロセスあて用のUDP用送信バッファは2倍必要です。
-
この関数を発行したトランザクションでは,トランザクションの最適化は行われません。
-
この関数は,トランザクションのコミット時に実行されます。したがって,トランザクションの同期点を取得する処理でエラーが起こった場合,この関数の処理は無効となります。