我想编写一个脚本文件,将到达消息队列管理器的MQ消息附加在日志文件中。请帮忙。
如果您想要获取通道上的所有消息,可以使用mrmq.dk的BlockIP2页面中的LogIP出口。像SupportPac MA0W这样的API出口可以记录所有放置的消息。API出口可以捕获本地应用程序以及通过通道到达的消息。
如果您想要编写脚本,可以使用诸如Q(来自SupportPac MA01)之类的程序,在消息到达时将其从队列中移除并附加到文件中。
例如:
#!/usr/bin/ksh
q -IMYQMGR/MY.QUEUE >> logfile.txt
while (1) {
$sync_flag = 0;
undef $outcome;
my $request_msg = MQSeries::Message::->new();
my $status = $request_queue->
Get('Message' => $request_msg,
'GetMsgOpts' =>
{
'WaitInterval' => 5000, # 5 seconds
'Options' => (MQSeries::MQGMO_WAIT |
MQSeries::MQGMO_SYNCPOINT_IF_PERSISTENT |
MQSeries::MQGMO_CONVERT |
MQSeries::MQGMO_FAIL_IF_QUIESCING),
},
);
unless ($status) { # Error
my $rc = $request_queue->Reason();
die "Error on 'Get' from queue $qmgr_name/$request_qname:\n" .
"\tReason: $rc (" . MQReasonToText($rc). ")\n";
}
next if ($status < 0); # No message available