如何创建引用特定Java方法的camel路由?

时间:2015-04-29 16:11:20

标签: java apache-camel dsl

我想编写一个Camel路由来读取特定目录中的所有xml文件,然后调用实现Processor的类的进程Java方法来执行某些操作并将结果打印到屏幕。

例如,Java类名为ScriptProcessor,它有一个处理方法:

public class ScriptProcessor implements Processor{

    final Script script ;


    public ScriptProcessor(Script script){
        this.script = script;
    }


    @Override
    public void process(Exchange exchange) throws Exception {
       //do something ...

    }

}

所以,目前我有一个像这样的路线的驼峰上下文:

   <camelContext xmlns="http://camel.apache.org/schema/spring">
      <route>
        <from uri="file:?noop=true"/>
        <to uri="mock:result"/>
      </route>
    </camelContext>

我认为所有xml文件都与Camel上下文定义(&#34;来自&#34;标记)在文件的同一目录中,并且我使用mock元素来指定路由的目的地。 我不知道如何调用ScriptProcessor类的进程方法向内调用Camel路由。这是一个必要的过程&#34;标签或类似的东西? 有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可以这样使用处理器:

<bean id="scriptProcessor" class="com.my.app.ScriptProcessor"/>

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file:?noop=true"/>
    <process ref="scriptProcessor" />
    <to uri="mock:result"/>
  </route>
</camelContext>

或者使用camel bean整合:

public class SomeBean {

    public void someMethod(Exchange exchange) throws Exception {
        //do something
    }
}

骆驼情境:     

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file:?noop=true"/>
    <bean ref="someBean" method="someMethod"/>
    <to uri="mock:result"/>
  </route>
</camelContext>

有关详细信息,请参阅http://camel.apache.org/bean-language.html

答案 1 :(得分:0)

我以这种方式解决了。我创建了一个带有路由定义的xml文件:

<route id="scriptProcessor">  
    <from uri="file:/C:/Users/milioli/Documents/NetBeansProjects/camel-rule-engines-processor/src/main/resources/samples/?noop=true"/>
    <bean beanType="com.mycompany.processor.ScriptProcessor" method="process"/> 
    <to uri="mock:result"/>  
    <onCompletion>
        <bean beanType="com.mycompany.processor.context.handler.ShutdownContextProcessor" method="process"/>
    </onCompletion>
</route>  

然后在流程方法中我做了我需要的操作。以这种方式定义路由避免了我使用here描述的方法加载定义。