我是Apache Camel的新手,他试图找出基于某些值配置交换路由的最佳方法。
此刻我要做的是:
this.from("direct:kafka.scenario.update").routeId("publish.scenario.kafka.controller.route")
.log(LoggingLevel.INFO, "Send Scenario update 2 Kafka Route").process(this.publishScenarioUpdateKafkaController).choice()
.when( simple( "${out.header.updateType} == '" + ChangeType.UPDATE + "'" ))
.process(this.publishVmsUpdateKafkaController)
.to(dataRefScenarioUpdateProducerRoute)
.when( simple( "${out.header.updateType} == '" + ChangeType.CREATE + "'" ))
.process(this.publishVmsUpdateKafkaController)
.to(dataRefScenarioCreateProducerRoute)
.when( simple( "${out.header.updateType} == '" + ChangeType.DELETE + "'" ))
.process(this.publishVmsUpdateKafkaController)
.to(dataRefMessageDeleteProducerRoute);
有什么想法吗?
答案 0 :(得分:2)
您正在实施Content Based Router EIP,我相信您的方法是正确的。您随时可以使用CamelTestSupport
来测试RouteBuilders
。
可能的警告:请检查.when()
上的out.header.updateType
检查是否调用exchange.getOut()
(我不太记得),如果这样做,则可能会丢失{中的重要信息{1}}消息。这可能会导致意外结果。这只是一个警告,您可能已经知道区别。如果尚未完成,请确保到达并了解this page 。