在骆驼路由中设置多个报头



是否可以在骆驼路由中使用单个调用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>

最新更新