Apache camel 筛选来自特定类型骆驼端点的消息

Apache camel 筛选来自特定类型骆驼端点的消息,apache-camel,Apache Camel,比如说,我有 from("direct:start").filter("...") 如何过滤来自smtp等端点的邮件?有没有办法检查上一个端点的类型 编辑:根据vikingsteve的建议,我以以下方式实现了代码: from("direct:source") .process(new Processor() { @Override public void process(Exchange exchange) throws Ex

比如说,我有

from("direct:start").filter("...")
如何过滤来自smtp等端点的邮件?有没有办法检查上一个端点的类型


编辑:根据vikingsteve的建议,我以以下方式实现了代码:

from("direct:source")
        .process(new Processor() {

            @Override
            public void process(Exchange exchange) throws Exception {
                exchange.setProperty("source", "smtps");
            }

        })
        .to("direct:start");


from("direct:start").filter(
                new Predicate() {
                    @Override
                    public boolean matches(Exchange exchange) {
                        if(exchange.getProperty("source") == "smtps")
                            return true;
                        else
                        return false;
                    }}));

如果需要标识有关原始消息的某些信息(例如消息的来源或正文中未包含的其他元数据),通常会设置exchange属性

编辑:这是您的解决方案的一个更简单的版本,我还没有测试过,但它可能会这样工作:

from("direct:source")
    .setProperty("source", "smtps")
    .to("direct:start");


from("direct:start")                
    .filter(exchangeProperty("source").isEqualTo("smtp"))

超级的!在比较字符串时,请记住使用
.equals
(而不是
=
from("direct:source")
    .setProperty("source", "smtps")
    .to("direct:start");


from("direct:start")                
    .filter(exchangeProperty("source").isEqualTo("smtp"))