如何创建引用特定 Java 方法的骆驼路线?
How to create a camel route that references a specific Java method?
我想编写一个 Camel 路由,它读取特定目录中的所有 xml 文件,然后调用 class 的 class 进程 Java 方法来执行某些操作,然后将结果打印到屏幕上。
例如 Java class 被命名为 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"标签)文件的同一目录下,我使用模拟元素来指定路由的目的地。
我不知道如何在 Camel 路由中调用 ScriptProcessor class 的 process 方法。是否需要 "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
}
}
骆驼语境:
<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>
我是这样解决的。我创建了一个包含路由定义的 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.
描述的方法加载定义
我想编写一个 Camel 路由,它读取特定目录中的所有 xml 文件,然后调用 class 的 class 进程 Java 方法来执行某些操作,然后将结果打印到屏幕上。
例如 Java class 被命名为 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"标签)文件的同一目录下,我使用模拟元素来指定路由的目的地。 我不知道如何在 Camel 路由中调用 ScriptProcessor class 的 process 方法。是否需要 "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
}
}
骆驼语境:
<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>
我是这样解决的。我创建了一个包含路由定义的 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.
描述的方法加载定义