如何为路由结果设置交换标头?

时间:2016-09-12 20:16:23

标签: apache-camel

我有一个骆驼路线,它有一个步骤调用子路径将身体的文本部分转换为PDF。很遗憾,camel-pdf不保留标头。有没有办法在不丢失当前交换的情况下获得子路由的价值?

子路线

from("seda:generate-pdf")

// Back up the original in a header
.setHeader("original", body())

// Create the PDF
.to("pdf:create?textProcessingFactory=autoFormatting")
// UHOH! All my headers are gone :(

// Set the PDF as the header for the doc server
.setHeader("pdf", body())

// Move the indicator back to the body
.setBody(header("original")) // <-- this no longer exists

主要路线

// Snip

// Unmarshal into Java

.unmarshal().json(JsonLibrary.Gson, MyReportContainingText.class)

// Call sub-route to generate the PDF
.inOut("seda:generate-pdf")
// UHOH! All my headers are gone :(

// Snip

1 个答案:

答案 0 :(得分:4)

而不是将标题中的内容保存在从一个路径传递到另一个路径时可以删除的内容中,而不是将它们保存为交换属性。例如:

.setProperty("pdf", body())
.setProperty("pdf", simple("${body}")

只要存在交换,就存在交换属性。