I am using webMethods MQAdapter to get messages from the MQSeries queue. On the adapter configuration (console), both the QueueManager and Queue are testing ok. I put a message on the Queue using an outside utility (C prog). However, my message handler which is configured to get from this queue, doesnt invoke the my service. I see some activity on my MQAdapter log (no errors), but no invocation of my service. If I run my utility to read messages, its able to get the exact message
What could be the issue? I dont see any errors which can give me any direction. Any help is appreciated. Thanks in advance
Regards,
Santosh
Have you tried reloading the MQSeries adapter package and the package which contains the Message handler services?
Try this option as well.
HTH.
mqadapter.log (11.3 k)
I tried reloading the packages, but still get same response. I have attached the log file from he MQAdapter-logging page. Looks like it may have picked a message, but doesnt say anything more.
Thanks
Santosh
Which version of MQ Adapter,ISserver you are working on?
Looks like it may have picked a message, but doesnt say anything more—
Check with the Savepipeline/restorepipeline steps in your receiving service,see if any *msg_body object,string variable traces are available. (since the log shows MessageHandlerManager.load() - 1 entries)
Make sure the Adapter Listener configured correctly and MessageHandler services have right inputs.
HTH.
How are you invoking your message handler that GET’s the message from the MQ queue? A LISTEN operation will process messages when they arrive on a queue, but a GET has to be invoked programmatically and is usually setup to run as a scheduled service on a regular interval.
Does the test message remain in the MQ queue after your IS service runs? You can use the Websphere MQ Explorer to see the messages in the queue or to put a simple test message to a queue.
Mark
Hi Santosh
If you use get then the message from MQ will be in the field called “messagebody” and if you are using listner then it will be
in the field named "msgBody’
Make sure you enabled your MQ handler after creating it.
check your pipeline values…
Thanks
Shibu
It works now! I used it as a listener and extracted the msgbody to get the message content.
Even if I dont put any message, the listener is still invoked with empty msgbody. Is that normal? not a big deal though, I can write some code to check that.
Many Thanks,
Santosh
Santosh,
This new issue you are seeing is addressed by one of the service packs for the Websphere MQ Adapter. You need to apply the following service packs in this order:
- Service Pack 3 []Fix 6 []Service Pack 1
BTW, version 6 of this adapter should be available soon. I think the latest target is the end of March 2004 but that could change. The new adapter will use the 6.x adapter run time and is supposed to deliver improved performance due to better connection management provided by the 6.1 ART.
HTH,
Mark
I have configured the MQAdapter message handler as a listener. Its working with the same service name specified as the inbound service name, Message Callback Service and Exception Callback Service. Is there a way to distinguish which of these has been invoked?
I tried to configure different services for these, but it complained about some template issue. Any help is appreciated
Thanks
Santosh
What version of the Websphere MQ adapter are you using? Did you apply the service packs and fixes as suggested by WM support? The about page in my adapter shows version 3.0, build 113, patch SP1. There could be something newer, so be sure to check with support.
My simple listen example uses separate services for the message processing callback service and the exception handling callback service with no problems.
If you use the identical service for these two parameters, it would be called both when a normal message is received and when an exception occurs. The only way to tell whether your are processing a normal message or an exception message is by examining the message content for null values in key fields (like messageBody).
Mark
I just installed the patches. I am able to test the QueueManager (from the MQAdapter page), but when I try to test the Queue Settings, it gives me the following error
“Unable to get a connection from the pool”
I tried creating a Queue settings for a completely different queue, but I still get the same message. Any ideas?
Thanks
Santosh
Hallo,
I think, what happens is that the mq adapter runs out of the number of allowed connections to the connection pool and then the adapter falls over. In any case that is what I think is happening to my adapter. When I restart the server it works again. In my case I can still test the queues successfully, but all my created message handlers are gone, when I restart the server or sometimes reload the mq packages, they are back again and everything works.
Will service packs resolve this?
Is the appropriate way of getting messages in realtime of the MQ queue scheduling a MQ get service or is there another way?
DJ - I think you’re right. We’ve found that the WebSphere MQ adapter 6.0 does a much better job of connection management.
Santosh - You can use the netstat command to see how many “ESTABLISHED” socket connections are open from your IS server to the MQ server. In Unix, the command would be something like:
netstat -a|grep MqServerName|grep ESTABLISHED
I have no trouble getting messages from an MQ Queue using the MQ Adapter Listener. However when I’m trying create a MQ Adapter Notification the document is not getting published and hence my trigger is not invoking my handler. Please help me with this problem.