MQSubscribe() 函数

MQSubscribe() 函数用于注册有关发布的一个或多个主题的感兴趣 WMQ 消息。

语法

subscriber_name
可选参数。引用 "gbasedbt".mqiservice 表的 pubsubname 列中的值。如果不指定 subscriber_name,将把 IDS.DEFAULT.SUBSCRIBER 用作订户。subscriber_name 的最大大小为 48 个字节。
policy_name
可选参数。引用 "gbasedbt".mqipolicy 表的 policyname 列中的值。如果不指定 policy_name,将把 IDS.DEFAULT.PUB.SUB.POLICY 用作策略。policy_name 的最大大小为 48 个字节。
topic
必需参数。一个字符串,其中包含消息出版物的主题。主题的最大大小为 40 个字节。可以在一个字符串中指定多个主题(长度最大为 40 个字符)。每个主题必须使用冒号分隔。例如,“t1:t2:the third topic”表示消息与三个主题全部关联:t1、t2 和 the third topic。如果不指定主题,消息将没有关联内容。

用途

MQSubscribe() 函数用于注册有关指定主题的感兴趣 WMQ 消息。subscriber_name 为匹配指定主题的消息指定逻辑目标。发布的有关主题的消息会放入订户(subscriber_name 参数)的 receiver 列指向的服务所引用的队列中。这些消息可以通过对接收方服务继续调用 MQRead()MQReceive() 函数来读取或接收。

该函数要求安装 WMQ 的 WMQ 发布/预订组件,且消息代理必须正在运行。

下表描述 MQSubscribe() 函数自变量的解释方式。
表 1. MQSubscribe() 自变量解释
用途 自变量解释
MQSubscribe(arg1) arg1 = topic
MQSubscribe(arg1, arg2) arg1 = service_name

arg2 = topic

MQSubscribe(arg1, arg2, arg3) arg1 = service_name

arg2 = policy_name

arg3 = topic

返回码

1
操作成功。
错误
操作失败。

示例

示例 1
下表包含 "gbasedbt".mqipubsub 表中的样本行和列。
样本行 pubsubname 列 receiver 列 pubsubtype 列
样本行 1

'IDS.DEFAULT.

PUBLISHER'

'' 'Publisher'
样本行 2

'IDS.DEFAULT.

SUBSCRIBER'

'IDS.DEFAULT.

SUBSCRIBER.RECEIVER'

'Subscriber'
begin;
EXECUTE FUNCTION MQSubscribe('IDS.DEFAULT.SUBSCRIBER',
   'IDS.DEFAULT.PUB.SUB.POLICY', 'Weather');
commit;
此语句说明订户如何使用以下参数注册感兴趣的,包含主题“Weather”的消息:
  • subscriber_name:“IDS.DEFAULT.SUBSCRIBER”
  • policy_name:“IDS.DEFAULT.PUB.SUB.POLICY”
  • topic:“Weather”
begin;
EXECUTE FUNCTION MQPublish('IDS.DEFAULT.PUBLISHER',
'IDS.DEFAULT.PUB.SUB.POLICY', 'Rain', 'Weather');
commit;
此语句使用以下参数发布消息:
  • publisher_name:“IDS.DEFAULT.PUBLISHER”
  • policy_name:“IDS.DEFAULT.PUB.SUB.POLICY”
  • msg_data:“Rain”
  • topic:“Weather”
  • correl_id:无
begin;
EXECUTE FUNCTION MQReceive('IDS.DEFAULT.SUBSCRIBER.RECEIVER',
'IDS.DEFAULT.PUB.SUB.POLICY');
commit;
此语句使用以下参数接收消息(返回“Rain”):
  • service_name:“IDS.DEFAULT.SUBSCRIBER.RECEIVER”
  • policy_name:“IDS.DEFAULT.PUB.SUB.POLICY”
示例 2
begin;
EXECUTE FUNCTION MQSubscribe('Weather');
commit;
此示例说明订户如何使用以下参数注册感兴趣的,包含主题“Weather”的消息:
  • subscriber_name:缺省订户
  • policy_name:缺省策略
  • topic:“Weather”
示例 3
begin;
EXECUTE FUNCTION MQSubscribe('PORTFOLIO-UPDATES',
 'BASIC-POLICY', 'Stocks:Bonds');
commit;
此示例说明订户如何使用以下参数注册感兴趣的,包含主题“Stocks”的消息:
  • subscriber_name:“PORTFOLIO-UPDATES”
  • policy_name:“BASIC-POLICY”
  • topic:“Stocks”、“Bonds”