I try to write a bash script that can read and write to tibco ems server. Is it possible? What i need to do that ?
thanks
You would need to develop a utility able to write messages to a queue and read messages from a queue. This can be done using EMS Java API. Then this utility would be called from your script.
A good starting point would be to look at the samples provided with the product in the <TIBCO_HOME>/ems/8.6/samples/java directory (look at tibjmsMsgConsumer.java and tibjmsMsgProducer.java).
Is it possible in IBM MQ through the console (command-line) to stop a queue?
I know how to stop a Queue Manager with endmqm. But can I run a console command which will stop one queue?
A queue cannot be stopped independently of the queue manager.
However, you may find that restricting puts and/or gets on/from the queue achieves your desired goal, depending on your setup. This will allow you to prevent applications from adding new messages to the queue and/or removing messages from the queue.
This can be done using commands in the runmqsc interface. https://www.ibm.com/support/knowledgecenter/SSFKSJ_latest/com.ibm.mq.ref.adm.doc/q083460_.htm
Here are the commands you'll need:
runmqsc QUEUE_MANAGER_NAME
ALTER QLOCAL('QUEUE_NAME') GET(DISABLED)
ALTER QLOCAL('QUEUE_NAME') PUT(DISABLED)
EXIT
Below is the commands and output for me disabling PUT and GET for my queue named Q1 on queue manager MyQM1.
mqa(mqcli)# runmqsc MyQM1
5724-H72 (C) Copyright IBM Corp. 1994, 2020.
Starting MQSC for queue manager MyQM1.
ALTER QLOCAL('Q1') GET(DISABLED)
1 : ALTER QLOCAL('Q1') GET(DISABLED)
AMQ8008I: IBM MQ Appliance queue changed.
ALTER QLOCAL('Q1') PUT(DISABLED)
2 : ALTER QLOCAL('Q1') PUT(DISABLED)
AMQ8008I: IBM MQ Appliance queue changed.
I'd recommend trying this out in a test environment first, to ensure it meets your needs and that your applications behave correctly to the error messages. E.g. "MQGET calls are currently inhibited for the queue. (2016)"
We have have 5 channels in our IBM MQ Explorer for the App.To.REG queue manager.
I want to find the date of creation or first use of each channel.
I have tried both display channel and display chstatus command but it didn't gave the required details.
You will need an MQ Configuration and/or Monitoring tool for that type of information. Also, you will need to turn on the queue manager's Configuration Events. The DIS CHL() command will only give you the last altered date & time.
I have connected remotely to a QMgr via MQ Explorer on Windows. The MQ server version is 7.5.0.1. I can put messages in SYSTEM.ADMIN.COMMAND.EVENT from MQ Explorer successfully and when I dump SYSTEM.ADMIN.COMMAND.EVENT, I can see my messages. As long as I know, I should be able to run PCF commands and MQSC commands via this channel. So, I put DISPLAY QMGR ALL message inside this queue and I can successfully see this message on MQ Server. My question is how can I run this message remotely via this channel? Thanks.
IBM Doc indicates that I should be able to receive the command result in SYSTEM.MQSC.REPLY.QUEUE. But I can not browse this queue from client MQ Explorer. The queue type for this queue is Model.
Couple of problems here.
First, you are using the wrong queue. The command server listens on SYSTEM.ADMIN.COMMAND.QUEUE. The queue to which you are sending messages, SYSTEM.ADMIN.COMMAND.EVENT is the queue to which the QMgr puts event messages after executing commands, provided of course that command events are enabled.
The second problem, as Jason mentions, is that the runmqsc processor takes human-readable script and converts it into commands the QMgr can understand. Passing textual commands directly to the command server won't work.
Typically we do what you want by passing the commands to runmqsc directly such as...
echo DISPLAY QMGR ALL | runmqsc MYQMGRNAME
If you require the ability to do this as a client, then you want to either download SupportPac MO72, or head over to MQ Gem and pick up a copy of MQSCX. Either of these will accept the command above on a local queue manager, and both can also be supplied with MQ Channel params and connect to a remote QMgr.
In addition to this basic functionality, the MQSCX product also has its own internal script parsing and execution. Suppose, for instance, that you want to do something depending on the command level of the QMgr.
Using runmqsc you could issue the command above, filter the resulting 2-column output through grep, awk, or similar, then capture the final output into a variable. You might need to do this multiple times to capture multiple values, invoking a new runmqsc each time and parsing the output in your script. You must then generate the string for the actual command you wanted to run when you started all this, and pass it to another invocation of runmqsc.
Alternatively, MQSCX lets you issue the DISPLAY command, then reference the resulting values directly by name. For example, you can pass MQSCX a couple lines of script telling it to inquire on the QMgr and then take a conditional action based on the command version, all without ever having to drop back into shell, bat or Perl script.
Full disclosure, I do not work for or get a commission from MQ Gem. I just don't like to beat my head against the wall writing 100 lines of code where 2 will do. If you do any amount of MQSC scripting, the ROI on MQSCX is measured in minutes. And it happens to be 100% on-topic as an answer to this question.
The command server doesnt process textual messages, it processes PCF messages. You need to build a message in PCF format and it can be processed. See http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.adm.doc/q019980_.htm
Ideally you would use real PCF format but there is a PCF format where you can send MQSC commands ('escaped' PCF - see here http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.adm.doc/q087230_.htm?lang=en)
Thanks for going thru this question.
We have installed ITCAM agent on MQ V7.5.0.3. Currently we had a scenario to clean out all the MQ objects and recreate it. While configuring ITCAM agent on MQ, there were few auto-created Subscriptions on Qmgr.
While taking dmpmqcfg -m these subscriptions are not captured ( as per info center "The dmpmqcfg utility dumps only subscriptions of type MQSUBTYPE_ADMIN, that is, only subscriptions that are created using the MQSC command DEFINE SUB or its PCF equivalent. Subscriptions that are created by applications using the MQSUB MQI call of type MQSUBTYPE_API are not part of the queue manager configuration, even if durable, and so are not dumped by dmpmqcfg")
Can anyone please advise how to take dump of all the subscriptions irrespective of created by DEFINE SUB or by some API's.
Thank you
You can issue the command DISPLAY SUB(*) TYPE(API) ALL to see them all.
dmpmqcfg does not dump them out because replaying them as DEFINE SUB commands would create TYPE(ADMIN) subscriptions.