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

SQL Anywhere 11.0.1 (Deutsch) » QAnywhere » QAnywhere-Referenz » QAnywhere SQL-API-Referenz » Nachrichtenverwaltung

 

ml_qa_getmessagenowait

Gibt die Nachricht-ID der nächsten Nachricht zurück, die sich für die angegebene Adresse in der Warteschlange befindet.

Parameter
Element Beschreibung Bemerkungen
1 Adresse VARCHAR(128)
Rückgabewert

Die Nachricht-ID als VARCHAR(128)

Gibt die Nachricht-ID der nächsten Nachricht zurück, die sich für die angegebene Adresse in der Warteschlange befindet. Gibt NULL zurück, wenn für diese Adresse keine Nachricht in der Warteschlange steht.

Bemerkungen

Verwenden Sie diese gespeicherte Prozedur, um zu prüfen, ob eine Nachricht auf die angegebene QAnywhere-Nachrichtenadresse wartet. Verwenden Sie den Listener, wenn eine SQL-Prozedur asynchron aufgerufen werden soll, sobald eine Nachricht für eine angegebene QAnywhere-Adresse verfügbar ist.

Informationen zum Blockieren bis zur Verfügbarkeit einer Nachricht finden Sie unter ml_qa_getmessage und ml_qa_getmessagetimeout.

Die Nachricht, die der zurückgeschickten Nachricht entspricht, wird als nicht empfangen eingestuft, bis die laufende Transaktion festgeschrieben ist. Nachdem der Empfang bestätigt wurde, kann die Nachricht von dieser oder einer anderen QAnywhere-API nicht nochmals empfangen werden. Ein Zurücksetzen der aktuellen Transaktion wiederum bedeutet, dass die Nachricht nicht empfangen wurde, daher können nachfolgende Aufrufe von ml_qa_getmessage dieselbe Nachricht-ID zurückgeben.

Die Eigenschaften und Inhalte der empfangenen Nachrichten können mit den gespeicherten Prozeduren der Serie ml_qa_get gelesen werden, bis ein Festschreiben oder ein Zurücksetzen der aktuellen Transaktion erfolgt. Wenn ein Festschreiben oder ein Zurücksetzen der aktuellen Transaktion erfolgt, sind die Daten der Nachricht nicht mehr verfügbar. Vor dem Festschreiben sollten Sie daher Daten, die Sie aus der Nachricht benötigen, als tabellarische Daten oder in SQL-Variablen speichern.

Siehe auch
Beispiel

Im folgenden Beispiel wird der Inhalt aller Nacrichten angezeigt, die sich an der Adresse myaddress in der Warteschlange befinden, bis alle diese Nachrichten gelesen sind. (Es ist im Allgemeinen effizienter, das Festschreiben erst durchzuführen, wenn die letzte Nachricht gelesen wurde, und nicht nach dem Lesen jeder einzelnen Nachricht.)

begin
    declare @msgid varchar(128);
    loop
        set @msgid = ml_qa_getmessagenowait( 'myaddress' );
        if @msgid is null then leave end if;
        message 'a message with content ' || ml_qa_gettextcontent( @msgid ) || ' has been received';
    end loop;
    commit;
end