Camel Aggregator:首次失败时停止路由并保留存储库中的所有消息

时间:2014-11-10 16:11:03

标签: java apache-camel

我已按如下方式设置聚合器。

    LevelDBAggregationRepository repository = new LevelDBAggregationRepository(REPO_NAME, repoLocation+"/"+REPO_NAME+".dat"); 
    repository.setUseRecovery(true); 
    repository.setMaximumRedeliveries(3); 
    repository.setRecoveryInterval(3000); 
    repository.setDeadLetterUri("mock:dead"); 

    from(UPDATE_ENDPOINT) 
            .aggregate(header("fileId"), new ESSessionAggregationStrategy()) // aggregates into an arraylist 
            .aggregationRepository(repository) 
            .completionPredicate(constant(false)) 
            .to("es://bulk") // my elasticsearch component 

我通过发送带有标题Exchange.AGGREGATION_COMPLETE_ALL_GROUPS = true的消息来刷新所有聚合。

如果elasticsearch组件不可用,我想停止包含存储库中所有消息的路由。基本上我不希望任何消息被移动到DeadLetter队列

1 个答案:

答案 0 :(得分:0)

您可以使用route policy以编程方式控制路线状态...

另见this page关于如何从路线中停止路线......