java - Apache Camel 。 throttle 部分路线

标签 java apache-camel jms throttling

我有一个 JMS 队列。收到消息后,需要将其存储到数据库中。然后根据某些情况我想以固定速率将此消息发送到第三方服务,所以我使用 throttle 。

我有以下路线:

    from("jms:queue")
            .bean(persistingListener)
            .choice()
                .when(some condition ..)
                    .throttle(5)
                    .asyncDelayed()
                    .bean(thirdPartyServiceClient)
            .endChoice();

但是,整个路由都被限制了,而不是与第三方服务客户端相关的部分。我的意思是,如果我将 100 条消息放入队列中,则只会读取前 5 条消息。因此,在这种情况下,不需要第三方服务的消息处理会延迟。

关于如何仅在与第三方服务相关的部分进行 throttle 有什么想法吗?

提前致谢

最佳答案

默认情况下,JMS 端点以按顺序处理每个 JMS 消息的模式运行。如果您希望允许由于异步处理而处理消息(无序),则需要通过在端点上配置 asyncConsumer=true 来显式启用此功能。

在 JMS 文档中查看更多详细信息:http://camel.apache.org/jms

关于java - Apache Camel 。 throttle 部分路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851724/

相关文章:

java - CamelContext 已加载,但路由定义为空

Oracle AQ 相同的消息被传递两次

java - JMS - ActiveMQ - Servlet(远程服务器(Apache-ActiveMQ))和控制台Java程序

java - 为什么我的 GPA 方法在传递正确的参数后无法正确计算?

用于打开受密码保护的 zip 文件的 Java 代码,该文件只能在 mac OS 中使用 7zx 和 keka 打开

java - 从 jar 文件生成 UTF-8 文件

java - 异常处理程序的 Camel 建议

java - 从 textField 添加项目到 JList

java - Camel 蓝图sql事务管理器

java - MQ消息回滚