在 Camel 中使用 Bean 组件

x33g5p2x  于2022-09-28 转载在 其他  
字(1.2k)|赞(0)|评价(0)|浏览(557)

Bean 组件可以用作Camel路由的一部分,以过滤/拦截路由中包含的数据的有效负载。 让我们看一个非常简单的例子。

此示例的目的是将文本文件中包含的货币从美元转换为欧元。 完成这项工作的 bean 是 MoneyConverter,它需要存储在 org.apache.camel.impl.SimpleRegistry 中才能在我们的路由中使用

import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;

public class JavaRouter {
  public static void main(String[] args) throws Exception {
    SimpleRegistry registry = new SimpleRegistry();
    registry.put("moneyConverter", new MoneyConverter());
    CamelContext context = new DefaultCamelContext(registry);
    context.addRoutes(new MyRouteBuilder());
    context.start();
    Thread.sleep(3000);
    context.stop();
  }
}

MoneyConverter 类的核心是将接收到的有效负载从一种货币转换为另一种货币:

public class MoneyConverter {
  public String convertValue(String data) throws Exception {
    double amount = (Integer.parseInt(data.replace("$", "").trim()) * 0.9);
    System.out.println("amount " + amount);
    return "€ " + amount;
  }
}

RouteBuilder 类通过在路由中包含对 MoneyConverter 及其方法 convertValue 的引用来驱动执行:

import org.apache.camel.builder.RouteBuilder;

public class MyRouteBuilder extends RouteBuilder {
  @Override
  public void configure() throws Exception {
    from("file:/var/data/in?noop=true")
        .beanRef("moneyConverter", "convertValue")
        .to("file:/var/data/out");
  }
}

相关文章

微信公众号

最新文章

更多