[英]How to read IBM MQ Message based on Message ID in via Java code (IBM MQ Client)
我需要通过传递消息id来实现代码来从IBM MQ读取消息,我实现的程序将一次读取一条消息,但我的代码没有覆盖消息id
public final void ReadMessage (String queueName) throws Exception {
int options = MQC.MQOOINQUIRE + MQC.MQOOFAILIFQUIESCING + MQC.MQOOINPUTSHARED;
System.out.printin ("start Creating the Queue....... )
MQQueue myQueue = this.mqManager.accessQueue(queueName, options) ;
MQMessage mgMessage = new MQMessage ( ) ;
MQGetMessageOptions gmo = new MQGetMessageOptions ( ) ;
gmo.options = MQC.MQGMO NO WAIT + MQC.MQGMO FAIL IF QUIESCING;
gmo.matchOptions = MQC.MQMO NONE;
gmo.waitlnterval = 15000;
try {
System.out.println("end of get Message from myqueue") ;
System.out.print In ("Message lenth" + mgMessage ( ) ) ;
mgMessage.characterSet = 300;
int length = mqMessage.getMessageLength( );
System. out ( of the message" + length) ;
System. out ( of the message" + mgMessage.readString(length)) ;
gmo.options = MQC.MQGMOWAIT | MQC.MQGMOBROWSENEXT;
}
catch (Exception e) {
}
}
此代码能够从队列中读取1条消息。 但我需要传递消息ID并根据消息ID我需要阅读消息。
这个要求是否可行? 如果是这样,请分享一些IBM MQ Client的示例。
想知道如何在代码中传递消息ID。
MQQueue myQueue = this.mqManager.accessQueue(queueName, options, MessageID) ;
谢谢
您可以在执行MQGET操作时使用messageId。类似于
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.matchOptions = MQC.MQMO_MATCH_MSG_ID;
mgMessage.messageId=messageId;
以下页面还讨论了如何根据MessageId或CorrelId或groupId获取消息https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.dev.doc/ q097550_.htm
请求/回复场景的IBM MQ标准用于请求应用程序:
例:
步骤#1请求申请(提出请求消息):
MQPutMessageOptions pmo = new MQPutMessageOptions();
MQMessage requestMsg = new MQMessage();
requestMsg.messageId = CMQC.MQMI_NONE;
requestMsg.correlationId = CMQC.MQCI_NONE;
requestMsg.format = CMQC.MQFMT_STRING;
requestMsg.messageType = CMQC.MQMT_REQUEST;
requestMsg.replyToQueueManagerName = qMgrName;
requestMsg.replyToQueueName = replyQName;
requestMsg.writeString("This is a test message");
outQ.put(requestMsg, pmo);
byte[] savedMsgId = requestMsg.messageId;
步骤#2请求申请(获取回复消息):
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = CMQC.MQGMO_FAIL_IF_QUIESCING;
gmo.matchOptions = CMQC.MQMO_MATCH_CORREL_ID;
MQMessage replyMsg = new MQMessage();
replyMsg.messageId = CMQC.MQMI_NONE;
// Specifically get the message with the matching value.
replyMsg.correlationId = savedMsgId;
inQ.get(replyMsg, gmo);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.