PublishJMS 处理器在向 IBM Websphere MQ 发布 json 消息时失败

PublishJMS processor fails while publishing json message to IBM Websphere MQ

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

注意: 只是为了添加尝试了各种处理器以查看是否可以修改属性,但是 none 有所帮助,我能够弄清楚这个问题只是因为我在同一个流程中同时使用了 ConsumeJMS 和 PublishJMS .

JSON 待发布消息:

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

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

QueryDatabaseTable > ConvertAvroToJSON > PublishJMS

但是当我使用 PublishJMS 时,我从 PublishJMS 处理器收到了与之前 post 中报告的错误相同的错误是下面提到的流程。

ConsumeJMS > ReplaceText > PublishJMS

我错过了什么吗?

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

如有任何帮助,我们将不胜感激。

以下是处理器的属性。

ConsumeJMS 属性:

替换文本属性

PublishJMS 属性

PublishJMS 处理器的数据出处

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

谢谢@andrew,你是对的。 但我想提出我所做的确切修复以使其正常工作并解决 IBM Websphere MQ jars v7.5 及以下版本的问题。

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

JMS_IBM_MsgType, JMS_IBM_Encoding & JMS_IBM_PutApplType

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

附件是使它工作的 UpdateAttribute 处理器的屏幕截图。

希望它能有所帮助,因为它是一种解决方法,直到 Apache NIFI 解决了实际问题。