java - Java DSL 中的 Apache Camel URI 过滤器

标签 java spring apache-camel

所以也许我错过了一些明显的东西,这很有可能!

但是,我想将一条路由从 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/

相关文章:

java - 在 Java 中将二维数组的列作为参数传递

使用 Spring JDBC 模板从数据库获取 800k 记录时发生 Java 堆空间错误

java - Spring Boot 测试用例不使用自定义转换服务

architecture - Camel 处理器中的业务逻辑与服务端点

java - Apache Camel - 使用 Java 构建端点

java - Camel sql存储java,无法输入数组作为oracle存储过程的输入参数

java - 在 Java 8 中,如何在不使用 forEach 的情况下从 Stream<int[]> 获取 int 数组

java - 非法状态异常 : PWC3990: getWriter() has already been called for this response

java - 单一模式以适应使用 Java 的多个正则表达式模式

spring - Spring batch中的抽象路由数据源