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");
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : http://www.masterspringboot.com/various/camel/using-the-bean-component-in-camel
内容来源于网络,如有侵权,请联系作者删除!