我是骆驼的新手,我必须在给定的camel应用程序的路径中点击过滤器。该应用程序仅使用xml-flavor。因为我可以在任何标签内添加<wireTap>
(我没有错误)我想它应该可能吗?!
这是带有电线的路线:
<route id="cep-output-postpaid" autoStartup="true">
<from
uri="someUri" />
<log message="Output: ${body}" />
<to
uri="file:someFile?fileName=result.csv&fileExist=Append"></to>
<filter>
<method ref="filterAfterDownTime" method="numberOfDaysToFilter(${body}, 100)" />
<process ref="processor1"></process>
<throttle timePeriodMillis="10000">
<constant>40</constant>
<wireTap uri="direct:wireTap"/>
<to uri="someWsdlService"></to>
</throttle>
<process ref="processor1"></process>
</filter>
<log message="Done CEP Engine Output" />
</route>
bean的引用如下:
<bean id="wireTap" class="somePackage.WireTap"></bean>
最后是线控课程:
public class WireTap {
public PcrfEdrPostpaidWireTap(){
System.out.println("wiretap constructor called");
}
@Handler
public void handleBody(String body){
System.out.println("Wiretap says:" + body);
}
}
问题既不是构造函数也不是方法被调用,但是溃败正在运行并产生其输出。 有任何想法吗?提前谢谢。
其他问题: 如何在这里使用“seda”? (我想将窃听与处理分离) 和 是否可以给窃听器一个参数(例如,用于窃听的文件的路径)
答案 0 :(得分:1)
如果你想在bean上调用一个方法,你应该使用bean组件 http://camel.apache.org/bean
所以改变
<wireTap uri="direct:wireTap"/>
要
<wireTap uri="bean:wireTap"/>
请注意,你可以给bean任何你想要的id,你不必称它为wireTap。