メッセージの同時引き出しをなしに指定した場合,ee_scd_msg_receive関数によって読み出したメッセージは,ee_scd_msg_rollback関数によって差し戻すことができます。ee_scd_msg_rollback関数を発行すると,トランザクションの終了状態に関係なく,読み出し済みのメッセージをロールバックして,メッセージを未読み出しの状態にします。
読み出しメッセージの差し戻し例を次の図に示します。
図2-39 読み出しメッセージの差し戻し例
トランザクション起動時に読み出したメッセージは,ee_scd_msg_rollback関数では差し戻せません。トランザクション起動時に読み出したメッセージを差し戻したい場合は,トランザクションをロールバックさせる必要があります。
ee_scd_msg_rollback関数によってメッセージが未読み出しの状態となるのは,ee_scd_msg_rollback関数を発行してUAPがリターン(コミット)したタイミングです。
ee_scd_msg_receive関数発行後,ee_scd_msg_rollback関数を発行し,再度ee_scd_msg_receive関数を発行した場合は,次のメッセージを読み出します。
読み出しメッセージの差し戻しが有効となるタイミングを,次の図に示します。
図2-40 読み出しメッセージの差し戻しが有効となるタイミング
なお,ee_scd_msg_rollback関数を複数回発行した場合は,最後にee_scd_msg_rollback関数で指定したメッセージ通番が有効となります。