ibm mq - perl mqseries read event messages -
i want read system.admin.qmgr.event event messages. can receive messages, output format not readable.
this perl sub use reading:
sub readeventmessage() { $self = shift; $qmgr = shift; # name of queue manager $sourceq = shift; $nmessages = shift; $count = 0; $sourcequeue = mqseries::queue->new ( queuemanager => $qmgr, queue => $sourceq, #mode => 'input', options => mqoo_input_shared | mqoo_browse, )|| die ("unable instantiate $qmgr::$sourceq object\n"); while (1) { #my $returned_message = mqseries::message->new( data =>"" ); $returned_message = mqseries::message->new(), #data => { # format => mqevent, #}, getmsgopts => { options => mqseries::mqgmo_browse_next | mqseries::mqgmo_accept_truncated_msg | mqseries::mqgmo_fail_if_quiescing } ; $rc=$sourcequeue->get( message => $returned_message); if ($rc == 1) { $msg_data = $returned_message->data(); #print "returned event message\t======>\n"; #print dumper($msg_data); #print $msg_data."\n"; $count++; $msg_header = $returned_message->msgdesc(); $msg_header->{data}=$msg_data; foreach (keys %$msg_header) { $arg = "$_:$msg_header->{$_}"; # # encode data # $arg=~s/\\/\\\\/g; $arg=~s/\n/\\n/g; if ( $arg=~/^\s*$/ ) { next; } print "\n$arg"; } if ( defined $nmessages ) { if ( $nmessages < ($count +1)) { last; } } } elsif ($rc == -1) { $status="\nno more messages found on $sourceq\n \n"; last; } else { $status="\nerror retrieving messages $sourceq." . "\ncompcode =" . $sourcequeue->compcode() . "\nreason =" . $sourcequeue->reason() . "\n"; last; } } }
the output i'm getting is:
puttime:12065823 replytoq: groupid: useridentifier: encoding:546 applidentitydata: backoutcount:0 format:mqevent msgflags:0 applorigindata: putapplname:qm_h35299 msgtype:8 msgseqnumber:1 codedcharsetid:850 accountingtoken: offset:0 correlid: replytoqmgr:qm_h35299 persistence:1 putdate:20120607 originallength:-1 putappltype:7 expiry:-1 version:2 priority:0 data: $ ☺ , ☺ ☺ ☺ ☻ ♦ d ▀ 0 qm_h35299 ♥ ► ³♥ ♣
data format mqevent, ccsi 850, , encoding 546.
any appreciated.
event messages in programmable message format (pcf). format set of name/type/value triplets in linked list. necessary walk list in order read messages. fortunately, mqseries perl module includes mqseries::message::event class this. various parameters , attributes returned perl hash easy enumerate or access values.
Comments
Post a Comment