Apache camel以字符串形式获取结果

时间:2017-04-05 18:30:50

标签: apache-camel

我有一个使用骆驼天气服务的简单应用程序。我可以在控制台中记录结果,但是我想将结果保存在变量中,比如String,所以我可以在JLabel上显示它。

我的路线是:

from("weather:foo?location=Breda,Netherlands&appid=appid")
    .to("bean:outPutBean?method=printLn")
    .to("stream:out");

此时,outputBean只执行简单的返回。我想在该函数中创建一个JSON解析器。

public class OutputBean {
    public String printLn(String msg){
        return msg;
    }   
}

如何在变量中保存路径的结果,以便稍后可以使用这些数据?

编辑: 我的代码现在看起来像:

camelContext.addRoutes(new RouteBuilder() {             
    @Override
    public void configure() throws Exception {
        from("weather:foo?location="+ txtCity.getText() + "&mode=xml&units=metric&appid=appid")
        .setHeader("temperature", XPathBuilder.xpath("//temperature/@value", String.class))
        .to("bean:outPutBean?method=printLn")
        .to("stream:out");
    }
});
[HERE]

public class OutputBean {
    public String printLn(@Header("temperature")String temperature){
        return "Output: " + temperature;
    }
}

如何在[HERE]处使用温度变化?

2 个答案:

答案 0 :(得分:0)

我会这样做。

  1. 将您想要的任何内容保存到标题中。
  2. from("weather:foo?location=Breda,Netherlands&appid=appid")
    .setHeader("myHeader", "myHeaderValue");    
    .to("bean:outPutBean?method=printLn")
    .to("stream:out");
    

    您可以从输入正文或其他地方获取值。

    1. 在你的bean中,我会收到那个标题并保存它,然后做你想做的任何事情。
    2. public class OutputBean {
          public String printLn(@Header("myHeader")String header){
              String value = header;
              return value;
          }
      

答案 1 :(得分:0)

  • 将一个成员变量添加到设置路径的类中。
  • 在路线中添加内联处理器
  • 在处理器中从标题中获取您想要的字符串并将其存储在变量