在Camel中每小时消耗的消息不超过1条消息?

时间:2013-10-18 16:02:26

标签: java apache-camel amazon-sqs

我对骆驼有点新鲜,如果这是一个愚蠢的问题,请原谅我!

在Camel中,我列出了一个针对队列的竞争消费者列表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除外)。基于这种理解,我相信这条路线满足了这些要求。

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

1 个答案:

答案 0 :(得分:2)

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

如果您想等一个小时然后阅读邮件,请查看ScheduledPollConsumer选项(Doc) 某些选项允许使用调度程序,如Quartz2或基于Spring的调度程序。

如果您想确定,请使用log组件:.to("log:com.mycompany.order?level=DEBUG")

相关问题