gpt4 book ai didi

ibm-mq - 用于从队列管理器检索 MQ 消息的脚本文件

转载 作者:行者123 更新时间:2023-12-02 04:01:31 25 4
gpt4 key购买 nike

我想写一个脚本 将队列管理器中到达的 MQ 消息附加到日志文件中的文件。请帮助

最佳答案

如果您希望所有消息都到达一个 channel ,您可以使用 mrmq.dk 的 BlockIP2 页面中的 LogIP 导出。 . API 导出,例如 SupportPac MA0W可以记录所有放置的消息。 API 导出可以捕获来自本地应用程序的消息以及通过 channel 到达的消息。

如果要编写脚本,可以使用 Q(来自 SupportPac MA01)之类的程序在消息到达时从队列中删除它们并将它们附加到文件中。

例如,

#!/usr/bin/ksh

q -IMYQMGR/MY.QUEUE >> logfile.txt

通常,脚本会被触发并配置为将新消息附加到文件中。这样做的问题是它破坏性地删除了消息。如果有一个记录应用程序需要使用这些消息,那不是一个很好的解决方案。您可以浏览队列,但不能保证在记录应用程序获取消息之前获取消息 - 并且浏览会定期在队列头部重新启动,因此您可能会记录相同的消息两次。

另一个脚本选项是 Perl MQSeries模块。该模块公开了 WMQ API 的所有选项以及面向对象的方法。如果您需要一些快速而肮脏的东西,Q 程序作为可执行文件提供。如果您想要将所有 API 暴露给您的脚本(并且不介意编译它)的强大功能,Perl MQSeries 模块是一个不错的选择。下面是取自模块示例的代码片段,展示了如何获取消息:
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

人们过去做过的一件事是将队列转换为主题的别名。使用消息的应用程序从新队列重定向到 GET,并且管理订阅将主题连接到新队列。此时,真正的应用程序会获取所有消息,并且可以进行新订阅以记录通过主题的消息。

关于ibm-mq - 用于从队列管理器检索 MQ 消息的脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10320738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com