2013-10-18 58 views
0

我对骆驼有点新,所以请原谅我,如果这是一个愚蠢的问题!骆驼每小时消费不超过1条消息?

在骆驼,我有一个队列竞争消费者名单,queue-1。我希望每个消费者在尝试阅读队列之间等待1小时,但每过一个小时过去一次,每个消费者都应该持续轮询,直到收到消息。一旦它收到一条消息,它应该处理它,然后等待一个小时再尝试另一次读取,等等。

这是我已经设置了路线:

from("aws-sqs://queue-1?accessKey=ABC&secretKey=XYZ&maxMessagesPerPoll=1") 
    .unmarshal().base64() 
    .unmarshal().serialization() 
    .throttle(1) 
    .timePeriodMillis(TimeUnit.HOUR.toMillis(1)) 
    .bean(new ProcessorBean()) 
    .marshal().serialization() 
    .marshal().base64() 
    .to("aws-sqs://queue-2?accessKey=ABC&secretKey=XYZ");  

这是我的理解是路线同步执行(与specific components designed to work asynchronously除外)。基于这种理解,我相信这条路线可以满足这些要求。

这会做我想要的吗?为什么或者为什么不?

回答

2

您的路线将消耗队列中的消息,然后等待一个小时。

如果要等待一个小时,然后读取邮件,看ScheduledPollConsumer选项(Doc) 某些选项允许使用调度像Quartz2或基于Spring调度。如果您想确定:.to("log:com.mycompany.order?level=DEBUG"),请使用​​组件。

+0

非常好。这与我所看到的相符。谢谢你的确认! – sigpwned