Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阿帕奇骆驼。路线的一部分_Java_Apache Camel_Jms_Throttling - Fatal编程技术网

Java 阿帕奇骆驼。路线的一部分

Java 阿帕奇骆驼。路线的一部分,java,apache-camel,jms,throttling,Java,Apache Camel,Jms,Throttling,我有一个JMS队列。收到消息后,需要将其存储到数据库中。然后,根据某些条件,我希望以固定速率将此消息发送给第三方服务,因此我使用节流 我有以下路线: from("jms:queue") .bean(persistingListener) .choice() .when(some condition ..) .throttle(5)

我有一个JMS队列。收到消息后,需要将其存储到数据库中。然后,根据某些条件,我希望以固定速率将此消息发送给第三方服务,因此我使用节流

我有以下路线:

    from("jms:queue")
            .bean(persistingListener)
            .choice()
                .when(some condition ..)
                    .throttle(5)
                    .asyncDelayed()
                    .bean(thirdPartyServiceClient)
            .endChoice();
但是,整个路由被限制,而不是与第三方服务客户端相关的部分。我的意思是,如果我在队列中放入100条消息,那么只会读取前5条消息。因此,在这种情况下,不需要第三方服务的消息的处理会延迟

关于如何仅在与第三方服务相关的部分节流,有什么想法吗


提前感谢

缺省情况下,JMS端点以一种模式运行,其中每个JMS消息都是按顺序处理的。如果您希望允许由于异步处理而处理消息(无序),则需要通过在端点上配置
asynchconsumer=true
来启用此解释


请参阅JMS文档中的更多详细信息:

您的条件是否有可能始终为真?您还应该指定时间窗口。@alobodzk,好吧,没有这样的机会,我认为这无关紧要。默认情况下,节流时间窗口设置为1秒。在JMS端点上设置asyncConsumer=true。看看它的文档:@Claus-Ibsen,谢谢,这很有帮助。请创建一个答案,以便我可以接受