现在已经遇到了几个小时的问题,有人有什么想法吗?

java.lang.nosuchmethoderror:com.ibm.mq.mqexception。 。 ) at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:233) at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:922) at 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.客户端。

当我使用MQ本机库输入消息时,我会遇到此错误,并使用JMS API读取它们。 JMS读取未能抛出上面的异常。我还使用JMS选择器,这似乎正在引起问题。在选择者的情况下,一切正常。 tia。

有帮助吗?

解决方案

最后,我能够解决这个问题,这与选择器的创建方式有关。不同之处在于,MQ API的相关ID为字节数组,当JMS将其作为字符串中。因此,选择器无法选择消息,并且正在丢弃发布的错误。错误根本不是友好型友好的,因此必须进行很多反复试验。无论如何,这都可以正常工作,所以我很高兴。以下是我必须为此做的代码更改:

//字符串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.CreateCeiver(inqueue,selector);

从IBM文档转介代码。

其他提示

您的MQ库版本错误。尝试根据最新版本运行代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top