阿帕奇骆驼。节流部分路线
Apache Camel. Throttle Part of the Route
我有一个 JMS 队列。收到消息后,需要将其存储到数据库中。然后根据某些情况我想以固定速率将此消息发送到第三方服务,所以我使用节流。
我有以下路线:
from("jms:queue")
.bean(persistingListener)
.choice()
.when(some condition ..)
.throttle(5)
.asyncDelayed()
.bean(thirdPartyServiceClient)
.endChoice();
但是,整个路由都被限制了,而不是与第三方服务客户端相关的部分。我的意思是,如果我将 100 条消息放入队列中,则只会读取前 5 条消息。因此,在这种情况下,不需要第三方服务的消息处理会延迟。
关于如何仅在与第三方服务相关的部分进行节流有什么想法吗?
提前致谢
默认情况下,JMS 端点以按顺序处理每个 JMS 消息的模式运行。如果要允许由于异步处理而处理消息(无序),则需要通过在端点上配置 asyncConsumer=true
来显式启用此功能。
在 JMS 文档中查看更多详细信息:http://camel.apache.org/jms
我有一个 JMS 队列。收到消息后,需要将其存储到数据库中。然后根据某些情况我想以固定速率将此消息发送到第三方服务,所以我使用节流。
我有以下路线:
from("jms:queue")
.bean(persistingListener)
.choice()
.when(some condition ..)
.throttle(5)
.asyncDelayed()
.bean(thirdPartyServiceClient)
.endChoice();
但是,整个路由都被限制了,而不是与第三方服务客户端相关的部分。我的意思是,如果我将 100 条消息放入队列中,则只会读取前 5 条消息。因此,在这种情况下,不需要第三方服务的消息处理会延迟。
关于如何仅在与第三方服务相关的部分进行节流有什么想法吗?
提前致谢
默认情况下,JMS 端点以按顺序处理每个 JMS 消息的模式运行。如果要允许由于异步处理而处理消息(无序),则需要通过在端点上配置 asyncConsumer=true
来显式启用此功能。
在 JMS 文档中查看更多详细信息:http://camel.apache.org/jms