MQPublish() 函数

MQPublish() 函数会将有关一个或多个主题的消息发布到 WMQ 管理的队列。

语法

publisher_name
可选参数。引用 "gbasedbt".mqipubsub 表的 pubsubname 列中的值。如果不指定 publisher_name,将把 IDS.DEFAULT.PUBLISHER 用作发布者。publisher_name 的最大长度为 48 个字节。
policy_name
可选参数。引用 "gbasedbt".mqipolicy 表的 policyname 列中的值。如果不指定 policy_name,将把 IDS.DEFAULT.PUB.SUB.POLICY 用作策略。policy_name 的最大大小为 48 个字节。
msg_data
必需参数。一个字符串,其中包含将由 WMQ 发送的数据。字符串的最大大小由 LVARCHAR 数据类型定义。如果 msg_data 为 NULL,将向队列发送一条长度为零的消息。
topic
可选参数。一个字符串,其中包含消息出版物的主题。主题的最大大小为 40 个字节。可以在一个字符串中指定多个主题(长度最大为 40 个字符)。每个主题必须使用冒号分隔。例如,“t1:t2:the third topic”表示消息与三个主题全部关联:t1、t2 和 the third topic。如果不指定主题,消息将没有关联内容。
correl_id
可选参数。一个字符串,其中包含要与此消息关联的相关标识。通常在请求与回复场景中指定 correl_id,以便将请求与回复关联。correl_id 的最大大小为 24 个字节。如果不指定,将不向消息添加任何相关标识。

用途

MQPublish() 函数会将数据发布到 WMQ。该函数要求安装 WMQ 的 WMQ 发布/预订组件,且消息代理正在运行。

MQPublish() 函数会将 msg_data 中包含的数据发布到 publisher_name 中指定的 WMQ 发布者(使用 policy_name 定义的服务质量策略)。

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

arg2 = topic

MQPublish(arg1, arg2, arg3) arg1 = publisher_name

arg2 = msg_data

arg3 = topic

MQPublish(arg1, arg2, arg3, arg4) arg1 = publisher_name

arg2 = policy_name

arg3 = msg_data

arg4 = topic

MQPublish(arg1, arg2, arg3, arg4, arg5) arg1 = publisher_name

arg2 = policy_name

arg3 = msg_data

arg4 = topic

arg5 = correl_id

返回码

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

示例

示例 1
begin;
EXECUTE FUNCTION MQPublish('Testing 123');
commit:
此示例使用以下参数发布消息:
  • publisher_name:缺省发布者
  • policy_name:缺省策略
  • msg_data:“Testing 123”
  • topic:无
  • correl_id:无
示例 2
begin;
EXECUTE FUNCTION MQPublish
('MYPUBLISHER','Testing 345','TESTTOPIC');
commit;
此示例使用以下参数发布消息:
  • publisher_name:“MYPUBLISHER”
  • policy_name:缺省策略
  • msg_data:“Testing 345”
  • topic:“TESTTOPIC”
  • correl_id:无
示例 3
begin;
EXECUTE FUNCTION MQPublish('MYPUBLISHER',
'MYPOLICY','Testing 678','TESTTOPIC','TEST1');
commit;
此示例使用以下参数发布消息:
  • publisher_name:“MYPUBLISHER”
  • policy_name:“MYPOLICY”
  • msg_data:“Testing 678”
  • topic:“TESTTOPIC”
  • correl_id:“TEST1”
示例 4
begin;
EXECUTE FUNCTION MQPublish('Testing 901','TESTS');
commit;
此示例使用以下参数发布消息:
  • publisher_name:缺省发布者
  • policy_name:缺省策略
  • msg_data:“Testing 901”
  • topic:“TESTS”
  • correl_id:无
示例 5
begin;
EXECUTE FUNCTION MQPublish('SEND.MESSAGE',
'emergency', 'CODE BLUE', 'expedite');
commit;
此示例使用以下参数发布消息:
  • publisher_name:“SEND.MESSAGE”
  • policy_name:“emergency”
  • msg_data:“CODE BLUE”
  • topic:“expedite”
  • correl_id:无
示例 6
下表包含 "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”
1 请参阅『用法』一节以获取自变量的解释。