如何在骆驼的过滤器内点击

时间:2014-04-07 16:26:16

标签: apache-camel

我是骆驼的新手,我必须在给定的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&amp;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”? (我想将窃听与处理分离) 和 是否可以给窃听器一个参数(例如,用于窃听的文件的路径)

1 个答案:

答案 0 :(得分:1)

如果你想在bean上调用一个方法,你应该使用bean组件 http://camel.apache.org/bean

所以改变

<wireTap uri="direct:wireTap"/>

<wireTap uri="bean:wireTap"/>

请注意,你可以给bean任何你想要的id,你不必称它为wireTap。

相关问题