是否可以在骆驼路由中使用单个调用setHeader来设置多个交换报头?
像这样
<from uri="file://inputdir/?delete=true" />
<!-- need to set multiple headers at once(as a comma separated list)-->
<setHeader headerName="headername">
<constant>headerval</constant>
</setHeader>
<to uri="mock:end"/>
或者我应该为此创建一个自定义处理器吗? 不,据我所知,你不能一次设置多个标题。在您的情况下,自定义处理器可能会更有效。
您可能想看看这里的简单表达式语言,这里可以在您的骆驼路由xml文件中使用OGNL表示法。OGNL允许您在表达式中指定方法链。
例如,假设您有一个包含Employee
对象的消息,该对象具有getSalaryGrade()
方法,您可以使用以下语法将header
设置为此值:
<setHeader headerName="SalaryGrade">
<simple>${body.getSalaryGrade()}</simple>
</setHeader>
例如,你可以创建一个简单的类,它返回一个列表,并将列表存储在header中,然后在路由中通过simple访问该列表。下面的代码是未经测试的,但应该给你一个想法。
public class ListCity {
public List<String> ListCities()
{
ArrayList< String> list = new ArrayList<String>();
list.add("New York");
list.add("JOhannesburg");
list.add("HoChiMinh");
return list;
}
}
在xml中声明列表城市bean。然后,您可以使用以下命令将该列表设置为标题:
<setHeader headerName="CityList">
<simple>${listCity.ListCities()}</simple>
</setHeader>