Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » QAnywhere リファレンス » QAnywhere SQL API リファレンス » メッセージの管理

 

ml_qa_getmessage

キューに登録されている、指定されたアドレスを持つメッセージのうち、次に取り出せるもののメッセージ ID を返します。メッセージがキューに登録されるまで処理をブロックします。

パラメータ
項目 説明 備考
1 アドレス VARCHAR(128)
戻り値

VARCHAR(128) 型の メッセージ ID。

このアドレスを持つ、キューに登録されたメッセージがない場合は、NULL を返します。

備考

指定された QAnywhere メッセージ・アドレス宛ての待機中のメッセージがあるかどうかを同期的にチェックするには、このストアド・プロシージャを使用します。指定された QAnywhere アドレス宛てのメッセージが発生した場合に、非同期で SQL プロシージャを呼び出すには、Listener を使用します。

このストアド・プロシージャは、メッセージがキューに登録されるまで処理をブロックします。

ブロックを回避する方法の詳細については、ml_qa_getmessagenowaitまたはml_qa_getmessagetimeoutを参照してください。

返されるメッセージ ID に対応するメッセージが受信されたとみなされるのは、現在のトランザクションがコミットされた後です。受信がコミットされたメッセージは、このストアド・プロシージャやいかなる QAnywhere API でも受信することができません。同様に、現在のトランザクションがロールバックされると、メッセージが受信されていないことを意味します。このため、以降の ml_qa_getmessage の呼び出しで同じメッセージ ID が返される可能性があります。

受信されたメッセージのプロパティと内容は、現在のトランザクションに対してコミットまたはロールバックが実行されるまでの間、各種の ml_qa_get ストアド・プロシージャを使用して読み込むことができます。現在のトランザクションに対してコミットまたはロールバックが実行された時点で、そのメッセージ・データは読み込めなくなります。コミットを実行する前に、メッセージ内の必要なデータを表形式のデータとして、または SQL 変数に保存してください。

参照

次の例では、アドレス myaddress に送信されたすべてのメッセージの内容を表示します。

begin
    declare @msgid varchar(128);
    loop
        set @msgid = ml_qa_getmessage( 'myaddress' );
        message 'a message with content ' || ml_qa_gettextcontent( @msgid ) || ' has been received';
        commit;
    end loop;
end