MQSeries::Message 面向对象接口的MQSeries messages
use MQSeries qw(:functions);
use MQSeries::Message;
#
# Create a vanilla MQSeries::Message object for getting messages
创建一个普通的MQSeries::Message object 用于get 消息
#
my $getmsg = MQSeries::Message->new();
#
# Create a message for putting strings, which requires the
# MQMD.Format field to be specified. This is essential for
# character codeset conversion.
#创建一个消息用于输入字符串, 需要 MQMD. 格式字段被指定。
my $putmsg = MQSeries::Message->new
(
MsgDesc =>
{
Format => MQSeries::MQFMT_STRING,
},
);
#
# Create a reply message, copying the CorrelId from the MsgId of a
# request. This reply is also a string.
#
my $request = MQSeries::Message->new();
# Assume we get the message via an MQSeries::Queue object...
my $reply = MQSeries::Message->new
(
MsgDesc =>
{
Format => MQSeries::MQFMT_STRING,
CorrelId => $request->MsgDesc("MsgId"),
},
);
描述:
MQSeries::Message object 是一个00 机制来创建 MQSeries messages, put和get 它们到MQSeries queues,
提供一个接口 比完整的MQI 简单
这个模块是结合MQSeries::QueueManager, MQSeries::Queue and MQSeries::Properties
那些对象提供了 MQI的子集,通过一个简单的接口:
方法:
new
构造函数的参数是一个hash, 遵循 key/value 对(没有必要的键)
Key Value
=== =====
Data Scalar
BufferLength Positive Integer
MsgDesc MQI MsgDesc hash (MQMD structure)
Carp CODE reference
Data:
当创建一个消息放入到一个队列, Data应该被指定。
这个必须是一个简单的 scalar 值, 其他的MQSeries::Message 子类支持直接的编码复杂数据结构,
比如PERL 引用可以发送和检索作为MQSeries messages 使用MQSeries::Message::Storable module.
Data 方法将设置Data 消息部分 如果它是传递任何定义的值,
会简单的返回数据。因此,要清楚任何消息中的数据,传递空的字符串就行
$message = MQSeries::Message->new( Data => "foo" );
$message->Data(""); # Clears Data value entirely
为了 查询数据值, 方法必须被调用没有进一步参数:
$data = $message->Data(); # Returns Data unmolested
Buffer
这个方法 会返回raw, 转换后的缓冲区.这个真的先关的 一个消息类型 ,使用一个 PutConvert and/or GetConvert 方法
来转换raw buffer
BufferLength:
这个设置 消息的BufferLength 被提取使用MQGET.
默认是32K, 如果 消息是从队列接收是很大的,这个必须适当的设置
MsgDesc
这个key 是值是一个hash 引用 设置 MsgDesc 键/值,查看""MQSeries Application Programming Reference"文档
对于可能的keys和MQMD结构的值
此外, 查看示例章节对于特定的使用功能。
这是一个API的一个区域 不容易被隐藏,你必须知道你在做什么
Carp
这个key 指定一个代码引用到一个函数来替换carp()所有的请求,
允许API 的用户来捕获和处理所有的错误消息,或者简单的改变他们如何登陆
For example, one might want everything to be logged via syslog:
sub MyLogger {
my ($message) = @_;
foreach my $line (split(/
+/, $message)) {
syslog("err", $line);
}
}
Data:
这个方法 是用于设置或者查询数据结构的值。如果 指定了参数,然后指定了数据被分配作为这个对象的数据值。
如果没有参数给定,当前的消息值被返回
数据可以是任意的perl数据结构,然而,它必须可变化为一个scalar通过 PutConvert and GetConvert hooks
MsgDesc
这个方法可以用于查询 MsgDesc data structure.
如果没有给定参数, 整个MsgDesc hash 被返回,如果 一个单独的参数给定,