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

SQL Anywhere 11.0.1 (Français) » QAnywhere » QAnywhere Reference » QAnywhere SQL API reference » Message management

 

ml_qa_getmessage

Returns the message ID of the next message that is queued for the given address, blocking until one is queued.

Parameters
Item Description Remarks
1 Address VARCHAR(128)
Return value

The message ID as VARCHAR(128).

Returns null if there is no queued message for this address.

Remarks

Use this stored procedure to check synchronously whether there is a message waiting for the specified QAnywhere message address. Use the Listener if you want a SQL procedure to be called asynchronously when a message is available for a specified QAnywhere address.

This stored procedure blocks until a message is queued.

For information about avoiding blocking, see ml_qa_getmessagenowait or ml_qa_getmessagetimeout.

The message corresponding to the returned message ID is not considered to be received until the current transaction is committed. Once the receive is committed, the message cannot be received again by this or any other QAnywhere API. Similarly, a rollback of the current transaction means that the message is not received, so subsequent calls to ml_qa_getmessage may return the same message ID.

The properties and content of the received message can be read by the various ml_qa_get stored procedures until a commit or rollback is executed on the current transaction. Once a commit or rollback is executed on the current transaction, the message data is no longer readable. Before committing, you should store any data you need from the message as tabular data or in SQL variables.

See also
Example

The following example displays the content of all messages sent to the address 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