现在已经坚持这个问题几个小时了,有人有什么想法吗?
java.lang.NoSuchMethodError:com.ibm.mq.MQException。(Ljava / lang / String; Ljava / lang / String; II)V 在com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:223) at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:123) 在com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1198) at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:233) 在com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:922) 在com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:450) at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:742) at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:423) 在com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:258)
当我使用MQ本机库放置消息并且使用JMS API读取它时,我收到此错误。 jms读取失败抛出上面的异常。我也使用jms Selector,这似乎导致了问题。没有选择器一切正常。 TIA。
答案 0 :(得分:2)
最后我能够解决这个问题,这一切都与选择器的创建方式有关。区别在于MQ API将相关id作为字节数组,而JMS将其作为字符串。因此,Selector无法选择消息并抛出发布的错误。该错误根本不适合调试,因此不得不进行大量的试验和错误。无论如何现在这个工作,所以我很高兴。以下是我必须为此做的代码更改:
// String selector =“JMSCorrelationID ='”+ corleationID +“'”;在改变之前
StringBuffer fBuf = new StringBuffer("JMSCorrelationID = 'ID:");
byte[] correlBytes = corleationID.getBytes();
for(int i=0; i<24; i++) {
if (i>=correlBytes.length) {
fBuf.append("00");
} else {
byte b = correlBytes[i];
String hexStr = Integer.toHexString(b);
// -ve values produce 8 char results
if (hexStr.length()>2) hexStr = hexStr.substring(hexStr.length()-2);
// small values produce 1 char results
if (hexStr.length()<2) fBuf.append("0");
fBuf.append(hexStr);
}
}
fBuf.append("'");
String filter = fBuf.toString();
System.out.println("creating receiver with filter: "+filter);
QueueReceiver queueReceiver = queueSession.createReceiver(inQueue,filter);
// QueueReceiver queueReceiver = queueSession.createReceiver(inQueue,selector);
引用了IBM docs的代码。
答案 1 :(得分:0)
您的MQ库版本错误。尝试针对最新版本运行代码。