IBM Integration Community Come for answers. Stay for best practices. All we’re missing is you. Join / Log in Ask a question
You are quite right that you can automatically start your sender channel when messages arrive on its transmission queue by using an MQ feature called "Triggering".
You need to make the following changes to your transmission queue:-
If you also want to make the channel go inactive when it has nothing more to do, you should look for the "Disconnect Interval" setting on the channel.
It is a best practice to combine triggering to activate the channel and the Disconnect Interval to deactivate the channel.
Also, please be aware that since you have messages already on the transmission queue, and you do not yet have triggering configured on the transmission queue, you might be best to use the manual START CHANNEL command to get it going this first time as triggering would be looking for the change from a queue depth of 0 to a queue depth of 1
Please don't hesitate to ask follow up questions if I have not explained it well enough, or if there are words that you don't understand. I am happy to try to describe it using different words until you understand.
Sorry to hear that you are having trouble getting your channel to automatically start when messages are put to the transmission queue. What follows is a worked example for automatically starting a channel by using the MQ feature called "triggering" on the transmission queue. It uses two queue managers. Here is a picture of what will be defined.
On your Sending queue manager, called QM1 in my picture, you will define the following objects:-
On your Receiving queue manager, called QM2 in my picture, you will define the following objects:-
It is assumed that you already have a listener set up on QM2 since your question was about triggering not about channel connectivity. Let me know if you need help with the listener side of things too.
For each object in this worked example, I will show you the MQSC command to define the object and also describe the attributes to set in case you are not able to use MQSC commands (your question showed a screen shot from a GUI tool so I am uncertain if you are able to use MQSC).
Remember, as mentioned before, if you already have messages on your transmission queue before you make the configuration changes to enable triggering, you should start the channel manually first to allow it to clear all the messages, then when it next needs to be start, it can be started automatically when the depth of the queue changes from 0 to 1.
Let me know if any of the above is not clear - happy to explain anything you need in more details.
So far I have not understood an important point, about the initiation queue.I must create the queue called "SYSTEM.CHANNEL.INITQ" inside the IBM MQ? because I think it is not created.
In case I need to create the startup queue "SYSTEM.CHANNEL.INIT", what configuration should I have?
Apologies for so many questions I am a new user and need to solve certain technical issues.
The SYSTEM.CHANNEL.INITQ is one of the objects that is created when a queue manager is created. If you don't see it, make sure you can see other SYSTEM.* queues. It *SHOULD* be there. Can you see any of the other 49 SYSTEM queues that are normally defined on a queue manager? It seems highly unlikely that someone has deleted it, or your Channel Initiator wouldn't run correctly and channel retry couldn't function. Please double check. Try issuing the following MQSC command:-
Using MQSC does not hide objects like many GUIs do. Or find the setting in the GUI you are using to "Show SYSTEM objects".
This one single Initiation queue, read by the channel initiator (runmqchi) can be used to trigger start many many channels. You can use the same name SYSTEM.CHANNEL.INITQ as the name in the INITQ field for many transmission queues. It is intended to be used as a shared resource.