我是 Camel 新手,我陷入了一个看似简单的点。我需要解码交换中的 2 个 xml,然后将相应的 POJO 传递给处理器。我在想是否可以解码一个 xml,将其设置为交换属性,并对另一个 xml 重复相同的操作。最后,在处理器中,我将检索属性并可以在处理器中执行所需的逻辑。 我能够成功解码 xml,并获得 Exchange.in.body 中的最后一个 POJO。但是谁能告诉我在交换属性中设置未编码对象的结果的正确方法是什么? 我在下面尝试过,但它不起作用:
<setProperty propertyName="foo">
<unmarshall ref="modelref" id="model_id"" />
</setProperty>
这里 modelref 是对来自camel的org.apache.camel.model.dataformat.JAXBDataFormat类的bean的引用。
有人可以给我一些解决这个问题的建议吗?
最佳答案
Unmarshal 不是 setProperty 元素的有效子元素。 假设您已经执行了某种拆分,现在想要解码其中一个 XML 并将其设置为 header ,您可以执行如下操作:
<unmarshal ref="modelref" id="model_id" />
<setProperty propertyName="foo">
<simple>${body}</simple>
</setProperty>
关于java - 如何在 Camel 中将未编码的对象设置为交换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689630/