我创建了一些路线。以下是有问题的代码。以下是预期的行为:
- Exchange 首先在 hourlyFeedParts 队列中处理,然后传递给 dailyProcessor。
- 在 dailyProcessor 中,正在检查属性 currHour 是否为 23。如果没有,它只是传递。
如果
currHour == 23
,则应处理其中的代码。这部分又具有以下功能,- 如果属性
feedsleft
不为零,currHour==23
则执行选项中的所有代码。这可以。 - 如果属性
feedsLeft
为零,则处理其中的代码。其中的代码会查找任何进一步的消息。如果是,则将它们发送到hourlyFeedParts
. 问题来了:如果有任何消息要处理,to("direct:hourlyFeedParts")
则不会执行超出的代码。但是,如果没有返回任何内容,则代码可以正常工作。
- 如果属性
我想问题可能是代码以to
. 那么,应该有什么替代方案呢?
from("direct:dailyProcessor")
.choice()
.when(simple("${property.currHour} == 23"))
.choice()
.when(simple("${property.feedsLeft} == 0"))
.split(beanExpression(APNProcessor.class, "recheckFeeds"))
.to("direct:hourlyFeedParts")
.endChoice()
.end()
.split(beanExpression(new S3FileKeyProcessorFactory(), "setAPNS3Header"))
.parallelProcessing()
.id("APN Daily PreProcessor / S3 key generator ")
.log("Uploading file ${file:name}")
.to("{{apn.destination}}")
.id("APN Daily S3 > uploader")
.log("Uploaded file ${file:name} to S3")
.endChoice()
.end()