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_listener_queue

创建名为 ml_qa_listener_queue(其中 queue 是消息队列名)的存储过程以异步接收消息。

参数
说明 注释
1 消息 ID VARCHAR(128)。可从 QAnywhere 监听器获取消息 ID。
注释
注意

此存储过程与所有其它 QAnywhere 存储过程的不同之处在于此过程并非事先提供。如果您创建一个名为 ml_qa_listener_queue 的存储过程(其中 queue 是消息队列),QAnywhere 随后即会使用它。

尽管可在连接上同步接收各消息,但异步接收消息通常更方便。可创建一个在有消息在特定地址上排队等候时便被调用的存储过程。此过程的名称必须为 ml_qa_listener_queue,其中 queue 是消息队列。如果已有此过程,则只要有消息在给定地址上排队,便会调用此过程。

此过程从另一个不同的连接调用。只要执行此过程时不出现 SQL 错误,就会自动确认和提交消息。

注意

在此过程中不要执行提交或回退。

队列名是 QAnywhere 地址的一部分。有关详细信息,请参见QAnywhere 消息地址

另请参见
示例

下面的示例创建一个过程,只要有消息在名为 executesql 的地址上排队,便会调用此过程。在本示例中,此过程假设消息内容是可对当前数据库执行的 SQL 语句。

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