让我说
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;
}}));
答案 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"))