eugene007
asked on
Java - Report from websphere MQ
The code below works well for putting messages into MQ. The load balancing works perfect. I tried to obtain the report but no report is generated. How do I solve the problem?. Did I miss something?.
Java code
qMgr = new MQQueueManager(qManager);
int openOptions = MQC.MQOO_OUTPUT ;
MQQueue MQ1_RQSTIN = qMgr.accessQueue("QM1.RQST IN",openOp tions);
MQMessage hello_world = new MQMessage();
hello_world.putApplication Name = "src_mqsample.txt";
hello_world.report = MQC.MQRO_COA ;
hello_world.replyToQueueNa me = "QM1.REPLY";
File file = new File("C:
Documents and Settings
My Documents
JCreator LE
MyProjects
MQSample
src_mqsample.txt");
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file));
String text = null;
while((text = reader.readLine())!= null)
{
contents.append(text).appe nd(System. getPropert y("line.se parator")) ;
}
hello_world.writeObject(co ntents);
MQPutMessageOptions pmo = new MQPutMessageOptions();
MQ1_RQSTIN.put(hello_world ,pmo);
MQ Script
QM1
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(QM2) XMITQ(QM2.XMIT) PUT(ENABLED)
DEFINE QLOCAL(QM2.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM1.QM2.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM2.XMIT) CONNAME('localhost(1415)')
DEFINE CHANNEL(QM2.QM1.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE QLOCAL(QM1.REPLY) PUT(ENABLED) GET(ENABLED)
runmqlsr -m QM1 -t tcp -p 1420
QM2
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(ANY.QMGR) XMITQ(Q3.XMIT) PUT(ENABLED)
DEFINE QLOCAL(QM3.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM2.QM3.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM2.QM3.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM3.XMIT) CONNAME('localhost(1416)')
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE QREMOTE(QM1.REPLY) RQMNAME(QM1) RNAME('') XMITQ(QM1.XMIT)
DEFINE QLOCAL(QM1.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM2.QM1.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM2.QM1.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM1.XMIT) CONNAME('localhost(1420)')
runmqlsr -m QM2 -t tcp -p 1415
runmqlsr -m QM2 -t tcp -p 1419
QM3
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(ANY.QMGR)
DEFINE CHANNEL(QM2.QM3.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE CHANNEL(QM3.QM3.DF) CHLTYPE(CLUSRCVR) CONNAME('localhost(1416)') CLUSTER(CLUS2)
DEFINE QREMOTE(QM1.REPLY) RQMNAME(QM1) RNAME(MQ1.REPLY) XMITQ(QM2.XMIT)
DEFINE QLOCAL(QM2.XMITQ) USAGE(XMITQ) TRIGGER TRIGDATA(QM1.QM2.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM2.XMITQ) CONNAME('localhost(1419)')
runmqlsr -m QM3 -t tcp -p 1416
QM4
ALTER QMGR REPOS(CLUS2)
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE CHANNEL(QM4.QM5.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1418)') CLUSTER(CLUS2)
DEFINE QLOCAL(QM1.RQSTIN) CLUSTER(CLUS2)
runmqlsr -m QM4 -t tcp -p 1417
QM5
ALTER QMGR REPOS(CLUS2)
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE CHANNEL(QM4.QM5.DF) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1418)') CLUSTER(CLUS2)
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1417)') CLUSTER(CLUS2)
DEFINE QLOCAL(QM1.RQSTIN) CLUSTER(CLUS2)
runmqlsr -m QM5 -t tcp -p 1418
Your help is kindly appreciated.
Thank You.
Java code
qMgr = new MQQueueManager(qManager);
int openOptions = MQC.MQOO_OUTPUT ;
MQQueue MQ1_RQSTIN = qMgr.accessQueue("QM1.RQST
MQMessage hello_world = new MQMessage();
hello_world.putApplication
hello_world.report = MQC.MQRO_COA ;
hello_world.replyToQueueNa
File file = new File("C:
Documents and Settings
My Documents
JCreator LE
MyProjects
MQSample
src_mqsample.txt");
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file));
String text = null;
while((text = reader.readLine())!= null)
{
contents.append(text).appe
}
hello_world.writeObject(co
MQPutMessageOptions pmo = new MQPutMessageOptions();
MQ1_RQSTIN.put(hello_world
MQ Script
QM1
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(QM2) XMITQ(QM2.XMIT) PUT(ENABLED)
DEFINE QLOCAL(QM2.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM1.QM2.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM2.XMIT) CONNAME('localhost(1415)')
DEFINE CHANNEL(QM2.QM1.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE QLOCAL(QM1.REPLY) PUT(ENABLED) GET(ENABLED)
runmqlsr -m QM1 -t tcp -p 1420
QM2
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(ANY.QMGR) XMITQ(Q3.XMIT) PUT(ENABLED)
DEFINE QLOCAL(QM3.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM2.QM3.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM2.QM3.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM3.XMIT) CONNAME('localhost(1416)')
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE QREMOTE(QM1.REPLY) RQMNAME(QM1) RNAME('') XMITQ(QM1.XMIT)
DEFINE QLOCAL(QM1.XMIT) USAGE(XMITQ) TRIGGER TRIGDATA(QM2.QM1.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM2.QM1.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM1.XMIT) CONNAME('localhost(1420)')
runmqlsr -m QM2 -t tcp -p 1415
runmqlsr -m QM2 -t tcp -p 1419
QM3
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE QREMOTE(ANY.QMGR)
DEFINE CHANNEL(QM2.QM3.DF) CHLTYPE(RCVR) TRPTYPE(TCP)
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1417)')
DEFINE CHANNEL(QM3.QM3.DF) CHLTYPE(CLUSRCVR) CONNAME('localhost(1416)')
DEFINE QREMOTE(QM1.REPLY) RQMNAME(QM1) RNAME(MQ1.REPLY) XMITQ(QM2.XMIT)
DEFINE QLOCAL(QM2.XMITQ) USAGE(XMITQ) TRIGGER TRIGDATA(QM1.QM2.DF) TRIGTYPE(FIRST)
DEFINE CHANNEL(QM1.QM2.DF) CHLTYPE(SDR) TRPTYPE(TCP) XMITQ(QM2.XMITQ) CONNAME('localhost(1419)')
runmqlsr -m QM3 -t tcp -p 1416
QM4
ALTER QMGR REPOS(CLUS2)
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1417)')
DEFINE CHANNEL(QM4.QM5.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1418)')
DEFINE QLOCAL(QM1.RQSTIN) CLUSTER(CLUS2)
runmqlsr -m QM4 -t tcp -p 1417
QM5
ALTER QMGR REPOS(CLUS2)
DEFINE QLOCAL(DEAD.QUEUE)
DEFINE CHANNEL(QM4.QM5.DF) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('localhost(1418)')
DEFINE CHANNEL(QM3.QM4.DF) CHLTYPE(CLUSSDR) CONNAME('localhost(1417)')
DEFINE QLOCAL(QM1.RQSTIN) CLUSTER(CLUS2)
runmqlsr -m QM5 -t tcp -p 1418
Your help is kindly appreciated.
Thank You.
You should also define replyToQueueManager beside replyToQueueName
ASKER
public String replyToQueueManagerName
ASKER
I added:
hello_world.replyToQueueMa nagerName = "QM1";
But no report is return to the queue manager QM1 queue QM1.REPLY
hello_world.replyToQueueMa
But no report is return to the queue manager QM1 queue QM1.REPLY
You have not received COA because your message has NOT been delivered.
The target Q refer a Q on QM2
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(QM2)
which refer an unexisting Q
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(ANY.QMGR)
Try a simple structure first.
Make a drawing on it, signing the references and message paths.
The target Q refer a Q on QM2
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(QM2)
which refer an unexisting Q
DEFINE QREMOTE(QM1.RQSTIN) RNAME(QM1.RQSTIN) RQMNAME(ANY.QMGR)
Try a simple structure first.
Make a drawing on it, signing the references and message paths.
ASKER
Actually the mq script is a load balancing script. At QM3 it decides to route the message to QM4 or QM5.
ASKER
In QM4 and QM5 I have:
DEFINE QREMOTE(QM1.REPLY) RNAME(QM1.REPLY) RQMNAME(QM3) XMITQ('') CLUSTER(CLUS2)
so why cant the QM4 and QM5 use this remote queue to send a COA to QM1?
DEFINE QREMOTE(QM1.REPLY) RNAME(QM1.REPLY) RQMNAME(QM3) XMITQ('') CLUSTER(CLUS2)
so why cant the QM4 and QM5 use this remote queue to send a COA to QM1?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
How do I resolve this problem without affecting the load balancing capability of the MQ script?.
ASKER
I check the DEAD.QUEUE and Transmission Queue but the current depth is 0.
ASKER
I also did the following:
Java code:
hello_world.report = MQC.MQRO_COD ;
hello_world.replyToQueueNa me = "ANY.QMGR";
hello_world.replyToQueueMa nagerName = "QM3";
For QM4 and QM5 I:
DEFINE QALIAS(ANY.QMGR) TARGQ(QM1.REPLY) CLUSTER(CLUS2)
But no report is sent to QM1.
Java code:
hello_world.report = MQC.MQRO_COD ;
hello_world.replyToQueueNa
hello_world.replyToQueueMa
For QM4 and QM5 I:
DEFINE QALIAS(ANY.QMGR) TARGQ(QM1.REPLY) CLUSTER(CLUS2)
But no report is sent to QM1.
ASKER
I even check SYSTEM.DEAD.LETTER.QUEUE and found that the currentdepth is 0.
ASKER
ANY.QMGR does not exist, can I declare one with no queue and channel definition declared.
ASKER
I did a simple design and it works :)
ASKER
Open in new window