PublishJMS处理器无法将消息写入IBM Websphere MQ

时间:2017-04-04 17:02:44

标签: jms ibm-mq apache-nifi

我在通过PublishJMS处理器向IBM Websphere MQ Queue发布消息时遇到问题。

PublishJMS处理器的配置& JMS控制器服务,我已经验证了MQ连接没有问题。我相信我需要在PublishJMS或Controller Service中设置一些额外的属性。

enter image description here

enter image description here

以下是错误消息堆栈。

Caused by: com.ibm.msg.client.jms.DetailedMessageFormatException: JMSCC0051: The property 'JMS_IBM_MsgType' should be set using type 'java.lang.Integer', not 'java.lang.String'.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_102]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_102]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_102]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_102]
    at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:314) ~[na:na]
    at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:228) ~[na:na]
    at com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:104) ~[na:na]
    at com.ibm.msg.client.jms.internal.JmsMessageImpl.checkSettablePropertyName(JmsMessageImpl.java:2197) ~[na:na]
    at com.ibm.msg.client.jms.internal.JmsMessageImpl.setStringProperty(JmsMessageImpl.java:1690) ~[na:na]
    at com.ibm.jms.JMSMessage.setStringProperty(JMSMessage.java:1491) ~[na:na]
    at org.apache.nifi.jms.processors.JMSPublisher$1.createMessage(JMSPublisher.java:87) ~[nifi-jms-processors-1.1.0.2.1.2.0-10.jar:1.1.0.2.1.2.0-10]
    at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:603) ~[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:584) ~[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494) ~[spring-jms-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ... 17 common frames omitted

1 个答案:

答案 0 :(得分:1)

看起来你遇到了一个已知缺陷:APAR IT02814(JMSCC0051:属性'JMS_IBM_REPORT_PASS_CORREL_ID'应该使用TYPE'JAVA.LANG.INTEGER'设置,而不是'JAVA.LANG.STRING'。)< / p>

它指出,用于JMS的v7.0之前的IBM MQ Classes允许传递非INT,v7.0及更高版本更严格。 IBM已经添加了对v7.5.0.5和v8.0.0.2的修复程序以允许它继续工作,APAR还提供了有关如何在没有修复的情况下将应用程序更改为工作的建议。