Apache camel 使用Spring表达式语言(SpEL)访问嵌套头
我的驼峰路由需要从入站exchange对象访问kafka.HEADERS。其中一个头是进一步的头列表,其中值类型为RecordHeader。我想访问其中一个RecordHeader(例如leadEquipmentId),并将其与字符串进行比较。有人能建议怎么做吗?此语法不起作用:Apache camel 使用Spring表达式语言(SpEL)访问嵌套头,apache-camel,spring-el,Apache Camel,Spring El,我的驼峰路由需要从入站exchange对象访问kafka.HEADERS。其中一个头是进一步的头列表,其中值类型为RecordHeader。我想访问其中一个RecordHeader(例如leadEquipmentId),并将其与字符串进行比较。有人能建议怎么做吗?此语法不起作用: <spel>#{#{request.headers['kafka.HEADERS']}['leadEquipmentId']} == 'SomeEquipmentId'</spel> {{re
<spel>#{#{request.headers['kafka.HEADERS']}['leadEquipmentId']} == 'SomeEquipmentId'</spel>
{{request.headers['kafka.headers']}['leadEquipmentId']}='SomeEquipmentId'
记录头
不是映射
,因此您不能使用映射访问器
(['leadEquipmentId']
)
试一试
实际上,这将返回
记录头
,您需要它的值()
请参见编辑。我在您的第一次指导后制定了解决方案,并提出了要使用的.value()。在发布我制定的解决方案时,我发现您也提出了相同的建议{request.headers['kafka.headers'].lastHeader('leadEquipmentId').value()}='SomeEquipmentId'
对于可能在某个时间点引用它的人来说,语法有轻微的更新。{code>{new String(request.headers['kafka.headers'].lastHeader('leadEquipmentId').value())='SomeEquipmentId'},也就是说,大括号的位置应覆盖要计算的整个表达式。
#{new String(request.headers['kafka.HEADERS'].lastHeader('leadEquipmentId').value())} == 'SomeEquipmentId'