Target client option in setting up a queue on WAS - jms

In WAS console, on the Queues page, there is an option called 'Target Client' and the options are MQ and JMS. Now MQ i understand is websphere MQ, but what is JMS? Any JMS provider other than Websphere MQ? Because in my case the target is actually websphere MQ but i have selected JMS here and it still works fine.

Target client defines how the message will intepreted by the receiving application.
If you choose MQ, then a RFH2 header will be added with MQ specific info otherwise JMS info will be added (jms_bytes, jms_text etc..).
IBM has some info about it

Related

Integration Wildfly appication server and Websphere MQ

I need to integrate Wildfly and Websphere MQ it means that I want send JMS message from Wildfly to Websphere MQ.
What is the best way to achieve this? Should I implement some client and sent these JMS messages directly or maybe there is similar method like JMS bridge?

How to list all JMS providers including Default MQ messaging provider with particular scope

I have a wsadmin command to get list of JMS providers for all scope level
AdminJMS.listJMSProviders()
The above code is going to have the below output
['"WebSphere MQ JMS Provider(cells/redhatserverNode01Cell/nodes/redhatserverNode01/servers/server1|resources.xml#builtin_mqprovider)"',
'"WebSphere MQ JMS Provider(cells/redhatserverNode01Cell/nodes/redhatserverNode01|resources.xml#builtin_mqprovider)"',
'"WebSphere MQ JMS Provider(cells/redhatserverNode01Cell|resources.xml#builtin_mqprovider)"',
'sample(cells/redhatserverNode01Cell/nodes/redhatserverNode01/servers/server1|resources.xml#JMSProvider_1487316020150)']
what my question is
How to get JMS providers for particular scope
The above output displays all provider except default MQ messaging provider, how to get Default MQ messaging provider as well
I can't help you with displaying the default JMS provider, but you can use AdminConfig.list to filter by scope,
wsadmin>print AdminConfig.list('JMSProvider', '*cells/myCell/nodes/myNode/servers/server1*')
"WebSphere MQ JMS Provider(cells/myCell/nodes/myNode/servers/server1|resources.xml#builtin_mqprovider)"
wsadmin>print AdminConfig.list('JMSProvider', '*cells/myCell/nodes/myNode|*')
"WebSphere MQ JMS Provider(cells/myCell/nodes/myNode|resources.xml#builtin_mqprovider)"
wsadmin>print AdminConfig.list('JMSProvider', '*cells/myCell|*')
"WebSphere MQ JMS Provider(cells/myCell|resources.xml#builtin_mqprovider)"

MDB deployed on JBOSS fetching messages from IBM MQ

I would like to deploy MDB on JBOSS. But the publisher will not send messages to the JBOSS AS, it is sending messages to IBM MQ.
Should I use JCA to integrate JBOSS and IBM MQ?
OR
Can the MDB on JBOSS AS subscribe to the topic on which IBM MQ is getting messages from publisher?
What are the advantages of one approach to another?
The recommended way to consume messages in JBoss from IBM MQ is via a Message Driven Bean (MDB). This is done by deploying the IBM JCA resource adapter (RA) in JBoss. You must use the IBM RA in JBoss as this rar file contains the IBM MQ client code that is needed for communicating with IBM MQ.
When using the MDB approach, the container (JBoss, in this case) works with the JCA to manage JMS connections, message delivery and transactions. This leaves you to only write the onMessage() method - quite a lot gets done for you under the hood.
Yes you can certainly have an MDB in JBoss that is subscribed to a Topic on MQ,
You should deploy the WebSphere MQ Resource Adapter (WMQRA) into JBoss and then configured the WMQ RA JCA resources in JBoss (Activation Specification, Queue/Topic). This will then let you deploy your MDB, and the JCA resources will handle the connection to the WMQ Queue Manager and Queue/Topic that your messages are on.
There are a few guides on setting up the WMQ RA in JBoss around on the internet.

How can I view the JMS message selector a client application is using against a WebSphereMQ Queue Manager

I would like to be able to view the exact JMS message selector SQL that a WebSphere MQ JMS client application is using on its receive call.
If I run the client application against TIBCO EMS as the JMS provider the TIBCO EMS Administration API provides visibility of this information.
When the client application is run against WebSphere MQ as the JMS provider I can use:
display qstatus(MyQUEUE) type(handle) all
to see the consumers of the queue, but I can't see what JMS message selector the client has declared.
Currently it's not possible to see the selector in use; other open options, message information can be seen via runqmsc or via Explorer. (In Explorer, the Applications Connection view can show you what is connected with associated information).
I would suggest that you raise a Request For Enhancement - the process is documented here http://www-01.ibm.com/support/docview.wss?uid=swg21266802
Matthew

to view all websphere MQ messages in JMS call

I use JMS (Java Message Service API) in my java application to work with queues/topics residing on websphere MQ. I am looking for a tool/support pac which can show me all MQ Messages being called e.g. when I do queueConnectionFactory.createConnection(), it would have resulted into MQCONN/MQCONNX call, so I need to see what excatly is being passed. So basically during my entire JMS based interaction, I want to see all MQ messages which are being passed to. Is it possible?
if you are using websphere, you can turn on tracing by going to WAS console and tracing service to enable jms logging.
Trace tells you what APIs are being called. To a good extent trace helps. But beyond that call IBM help.
If you are using JMS MQ client mode connection it is possible to run send/receive exits on the MQ SVRCONN channel to log the client MQI and message flows. The free IBM SupportPac MA0Z has this capability. This technique is not possible with a binding mode connection because there is no MQ channel involved.

Resources