将json消息发布到IBM Websphere MQ时,PublishJMS处理器失败

时间:2017-04-06 03:32:48

标签: jms ibm-mq apache-nifi

我在NIFI的PublishJMS处理器中遇到问题,同时从中推送json消息。

注意: 只是为了添加尝试过的各种处理器以查看属性是否可以修改,但没有帮助,我能够找出问题只是因为我正在使用ConsumeJMS&在同一个流程中将JMS一起发布。

要发布的JSON消息:

{"dataprepcomplete":{"modelfamilytype":"property","groupid":"1","claims":[{"requestid":"1","claimid":"10001"},{"requestid":"2","claimid":"10002"}]}}

" JMSCC0051:THE PROPERTY' JMS_IBM_REPORT_PASS_CORREL_ID'应该使用TYPE' JAVA.LANG.INTEGER',NOT' JAVA.LANG.STRING'"根据我之前post中发布的解决方案解决,我可以从下面的流程中将json消息发布到我的MQ队列。

QueryDatabaseTable> ConvertAvroToJSON> PublishJMS

但是当我使用PublishJMS时,我从PublishJMS处理器的早期帖子中得到的错误与下面提到的流程相同。

ConsumeJMS> ReplaceText> PublishJMS

我错过了什么吗?

我是否必须在PublishJMS之前插入其他处理器才能成功发布消息。

对此的任何帮助都将受到高度赞赏。

以下是处理器的属性。

ConsumeJMS属性: enter image description here

ReplaceText属性 enter image description here

PublishJMS属性 enter image description here

PublishJMS处理器的DataProvenance enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

尝试在发送之前删除以JMS开头的所有属性。使用带有正则表达式掩码的UpdateAttribute。

答案 1 :(得分:1)

谢谢@andrew你是对的。 但我想提出我所做的确切修复以使其工作并克服IBM Websphere MQ jars v7.5及更低版本的问题。

我必须确保使用 UpdateAttribute 处理器从Apache Nifi的Flowfile中删除下面提到的属性。

JMS_IBM_MsgType,JMS_IBM_Encoding& JMS_IBM_PutApplType

并且通过添加具有相同名称的附加属性,在Flowfile中替换与整数相同的属性。

附带的UpdateAttribute处理器的屏幕截图使其正常工作。

enter image description here enter image description here enter image description here

希望它有所帮助,因为它是一个解决方法,直到用Apache NIFI修复实际问题。