所以也许我错过了一些明显的东西,这很有可能!
但是,我想将一条路由从 Spring 迁移到 Java。这条路线是这样的:
<bean id="myFilter" class="my.filter.MyFilter />
<route>
<from uri="ftp://someplace?filter=#myFilter" />
<to uri=(....) />
</route>
当转换为 Java DSL 时,我认为以下内容是等效的,但事实并非如此。我的行为与我想象的不同:
MyFilter m = new MyFilter();
.........
from("ftp://someplace")
.filter().method(m)
.to(....)
;
上面的方式似乎是从FTP服务器上检索文件,然后逐个过滤。
而 Spring 方式,在 URI 中使用过滤器选项,似乎首先过滤掉我不想要的所有结果,然后继续其快乐的小方式。
有没有办法重新创建过滤器的功能作为 Java DSL 中 URI 的一部分?
我假设我必须以某种方式声明一个 bean 才能使用它,但我找到的文档似乎并不清楚如何实现这一点。
最佳答案
您应该能够执行以下操作:
from("ftp://someplace?filter=#MyFilter").to("somewhere");
但是您需要将 MyFilter 添加到注册表,或者如果您使用蓝图,请将其添加为 bean,如下所示:
<bean id="myFilter" class="com.mycompany.MyFileFilter"/>
或者在此处查看如何在纯 java 中执行此操作: http://camel.465427.n5.nabble.com/Adding-File-name-filter-for-RouteEndpointDefinition-td4968230.html
Camel how to add something to registry - with java, in general
关于java - Java DSL 中的 Apache Camel URI 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980913/