java - Camel 每小时消耗不超过 1 条消息?

标签 java apache-camel amazon-sqs

我对 Camel 有点陌生,所以如果这是一个愚蠢的问题,请原谅我!

在 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 除外)。基于这样的理解,我相信这条路线满足了这些要求。

这能达到我想要的效果吗?为什么或为什么不?

最佳答案

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

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

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

关于java - Camel 每小时消耗不超过 1 条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19454043/

相关文章:

c# - 在 C# 中执行并发任务

java - 从 Java 中的 Camel 路线获取可视化文档?

java - Apache Camel 从 gmail 帐户读取未读邮件

amazon-web-services - 容错集群队列 - SQS

java - 我无法从我的应用程序将视频分享到 Whatsapp

java - 如何正确记录 Camel 中的消息/路由(流)?

amazon-web-services - 从 SNS 主题订阅时出现错误的 SQS AWS 消息

JavaFX | javafx.fxml.LoadException : Missing resource key

java - 如何找到 libgdx 中两个对象之间的距离

java - 大整数的 pow