【问题标题】:Apache Camel URI filter in Java DSLJava DSL 中的 Apache Camel URI 过滤器
【发布时间】:2016-12-06 05:11:20
【问题描述】:

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

但是,我想将路由从 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 才能使用它,但我找到的文档似乎并不清楚我如何实现这一点。

【问题讨论】:

    标签: java spring apache-camel


    【解决方案1】:

    您应该能够执行以下操作:

    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

    【讨论】:

    • 嗯,也许我不清楚,抱歉。但我的意思是我有一个特制的路由过滤器类(它基于文件的时间戳进行过滤,加上一些额外的),我想引用该类作为用于过滤 URI
    • 更新了我的答案。
    • 所以也许我做错了,但这是我一直在发生的问题。我做from("ftp://x?filter=#myFilter"),但总是以类似于Cannot convert String to required type of GenericFileFilter with value #myFilter 的错误告终。这到底是怎么回事?
    • 这就是我引用 netty 的参数的方式。serverInitializerFactory=#spf。我认为您遇到的错误与将参数添加到注册表有关。请参阅我的答案中的第二个链接,了解如何使用 java dsl 实现这一点。
    • 这是一种.. 有趣的处理方式。为什么在 Java DSL 中向注册表添加内容如此痛苦? :( 但是第二个链接有效!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2016-05-05
    相关资源
    最近更新 更多