NiFi的PublishJMS处理器如何配置以将属性作为JMS头发送
你遇到的问题是NiFi 1.9版本PublishJMS处理器的内置规则导致的,jms.开头的属性默认被识别为系统保留前缀,不会被「作为JMS头发送的属性(正则)」规则匹配,不管正则写的是啥都会被过滤,这是1.9版本的固定逻辑,不是配置错误。
修复配置步骤
方案一(推荐):调整自定义属性前缀
- 把你添加的所有
jms.开头的FlowFile属性重命名,去掉jms.前缀,比如jms.orderId改为orderId,或者替换为其他自定义前缀如myattr. - 保持「作为JMS头发送的属性(正则)」为默认值
.*即可,也可以写更精确的正则比如order.*|myattr\..*缩小匹配范围,避免发送无效系统属性 - 确认PublishJMS处理器的「使用消息属性的原始类型」配置为
true,避免非字符串类型的属性转换失败被丢弃
方案二:保留jms.前缀的调整方式
如果你的业务逻辑必须用jms.开头的属性名,需要额外修改系统头包含规则:
- 找到PublishJMS处理器的「要包括的JMS系统头」配置项
- 把你需要发送的
jms.开头的属性名逐个填入,多个属性用英文逗号分隔 - 保持「作为JMS头发送的属性(正则)」为
.*即可
避坑提示
- 不要修改
ActiveMQJMSConnectionFactoryProvider控制器服务的「属性命名策略」配置,保持默认的DEFAULT即可,修改为其他值会导致自定义属性被过滤 - 所有JMS头属性名不能包含空格、特殊符号,必须符合Java变量命名规范,否则会被ActiveMQ自动丢弃
内容的提问来源于stack exchange,提问作者Ginger
相关产品推荐
相关产品推荐

