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_listener_queue

Erstellen Sie eine gespeicherte Prozedur namens ml_qa_listener_Warteschlange (wobei Warteschlange der Name einer Nachrichtenwarteschlange ist), um Nachrichten asynchron zu empfangen.

Parameter
Element Beschreibung Bemerkungen
1 Nachricht-ID VARCHAR(128). Sie können die Nachricht-ID aus dem QAnywhere-Listener abrufen.
Bemerkungen
Hinweis

Diese Prozedur unterscheidet sich von allen anderen gespeicherten QAnywhere-Prozeduren, da diese gespeicherte Prozedur nicht bereitgestellt wird. Wenn Sie eine gespeicherte Prozedur namens ml_qa_listener_Warteschlange erstellen, wobei Warteschlange eine Nachrichtenwarteschlange ist, wird sie von QAnywhere verwendet.

Obwohl Nachrichten synchron in einer Verbindung empfangen werden können, ist es manchmal sinnvoll, Nachrichten asynchron zu empfangen. Sie können eine gespeicherte Prozedur erstellen, die aufgerufen wird, wenn eine Nachricht für eine bestimmte Adresse in die Warteschlange gestellt wird. Der Name dieser Prozedur muss ml_qa_listener_Warteschlange sein, wobei Warteschlange die Nachrichtenwarteschlange ist. Wenn diese Prozedur existiert, wird sie aufgerufen, sobald eine Nachricht für die angegebene Adresse in die Warteschlange eintritt.

Diese Prozedur wird von einer eigenen Verbindung aufgerufen. Wenn während des Ausführens der Prozedur kein SQL-Fehler auftritt, wird die Nachricht automatisch bestätigt und festgeschrieben.

Anmerkung

In dieser Prozedur sind keine Festschreibungen oder Rollbacks zulässig.

Der Warteschlangenname ist Teil der QAnywhere-Adresse. Weitere Hinweise finden Sie unter QAnywhere-Nachrichtenadressen.

Siehe auch
Beispiel

Im nachstehenden Beispiel wird eine Prozedur erstellt, die aufgerufen wird, wenn eine Nachricht für die Adresse namens executesql in die Warteschlange gestellt wird. In diesem Beispiel geht die Prozedur davon aus, dass der Inhalt der Nachricht eine SQL-Anweisung ist, die in der aktuellen Datenbank ausgeführt werden kann.

CREATE PROCEDURE ml_qa_listener_executesql(IN @msgid VARCHAR(128))
begin
 DECLARE @execstr LONG VARCHAR;
 SET @execstr = ml_qa_gettextcontent( @msgid );
 EXECUTE IMMEDIATE @execstr;
end