【发布时间】:2014-04-21 12:31:34
【问题描述】:
我是 Apache Camel 的新手。我有一个关于如何将方法传递给路由中定义的 bean 的问题。
我有以下路线定义:
<bean id="myBean" class="camel.MyBean"/>
<camelContext id="testContext" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file:data/inbox?noop=true"/>
<to uri="myBean"/>
<to uri="file:data/outbox"/>
</route>
</camelContext>
MyBean 类定义如下:
public class MyBean {
public void myMethod(Exchange exchange) {
System.out.println("MyBean myMethod " + exchange.getIn().toString());
}
}
这很好用,我得到了包含包含文件的“In message”的 Exchange。 exchange.getIn().toString() 给了我文件名。
如果我重写 MyBean 并使其变为:
public class MyBean {
public void myMethod1(String string) {
System.out.println("MyBean myMethod1 " + string);
}
}
它也有效。传入的消息以某种方式转换为包含传入文本文件内容的字符串。
如果我然后重写 MyBean 并实现它:
public class MyBean {
public void myMethod2(Integer integer) {
System.out.println("MyBean myMethod2 " + integer);
}
}
然后它停止工作。我认为这可能是因为 Camel 无法将文件转换为整数。
然后我有一个问题:虽然 Camel 在后台为我们做了所有的类型转换,但我们仍然需要知道它携带什么数据类型,以便我们设计路由上的节点。而且似乎没有规则可循。指定如何进行这种类型转换的 Camel 的一般规则是什么?
非常感谢。
【问题讨论】:
标签: java apache-camel