java - 如何创建引用特定 Java 方法的 Camel 路线?

标签 java apache-camel dsl

我想编写一个 Camel 路由,它读取特定目录中的所有 xml 文件,然后调用实现 Processor 的类的 process 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 ...

    }

}

所以,目前我有一个带有这样一条路线的 Camel 上下文:

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

我假设所有 xml 文件都在具有 Camel 上下文定义(“from”标签)的文件的同一目录中,并且我使用 mock 元素来指定路由的目的地。 我不知道如何在 Camel 路由中调用 ScriptProcessor 类的 process 方法。需要一个“过程”标签或类似的东西吗? 有人可以帮助我吗?

最佳答案

你可以这样使用处理器:

<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
    }
}

Camel 语境:

<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

关于java - 如何创建引用特定 Java 方法的 Camel 路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949148/

相关文章:

json - Elasticsearch结合查询和过滤器无法提供正确的结果

java - 如何在我的数据库中插入复合组件(菜单菜单)

websphere - 尝试使用在 WebSphere Application Server 上运行的 CXF 获取 Camel 示例

java - 如何保留动态创建的 Camel 路线?

java - Spring 集成 - 如何在不轮询的情况下检查文件目录?

lua - 我的 Lua DSL 能用吗...? (这似乎太简单了,不可能是真的)

java - 无法在最新的谷歌浏览器上访问 https api

java - Docker Kafka容器Consumer不消费数据

java - 以全大写形式声明记录器并将其定为最终版本有什么区别吗?

java - 如何将 Spring bean id 注入(inject)另一个 Spring 配置的 Bean 中?