过滤来自特定类型的骆驼端点的消息

时间:2018-06-21 09:23:32

标签: apache-camel

让我说

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;
                    }}));

1 个答案:

答案 0 :(得分:0)

如果您需要标识一些有关原始消息的信息(例如消息的来源或正文中不包含的其他一些元数据),通常可以设置交换属性。

from("smtp:...").setProperty("source", "smtp").to("...")

编辑:这是您的解决方案的一个简单版本,我尚未对其进行测试,但它可能像这样工作:

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


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