Apache camel 驼峰节流

Apache camel 驼峰节流,apache-camel,rabbitmq,Apache Camel,Rabbitmq,我试图在Camel中找出节流的概念。我已经看过骆驼牌的,但这适用于许多机上交换 我的路线如下: routeBuilders.add(new RouteBuilder() { @Override public void configure() throws Exception { from("rabbitmq://127.0.0.1:5672/abc?queue=a&username=XXX&passw

我试图在Camel中找出节流的概念。我已经看过骆驼牌的,但这适用于许多机上交换

我的路线如下:

routeBuilders.add(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("rabbitmq://127.0.0.1:5672/abc?queue=a&username=XXX&password=XXX&autoAck=false&durable=true&exchangeType=direct&autoDelete=false")
                .to("rabbitmq://127.0.0.1:5672/abc?queue=b&username=XXX&password=XXX&autoAck=false&durable=true&exchangeType=direct&autoDelete=false");
            }
        });
现在我的用例是,我想在这些路由之间传输2000条消息,我知道这可以通过
.throttle(2000)
完成。但我陷入了这样的境地:我必须决定如何控制下一个2000条消息的路由。我只想在接收方队列变为空时路由下2000条消息

例如,消息从队列
a
路由到
b
。假设2k消息已成功路由,现在我想暂停路由,以便在队列
b
变为空之前它不会传输更多消息(假设有一个消费者正在从队列
b
中提取消息)


非常感谢您在这方面提供的任何帮助/指导。

您可以为此使用路由策略。您可以在该路由策略中实现逻辑来挂起/恢复路由以限制路由

我们有一个开箱即用的策略,即使用Camel中的机上消息数作为其度量。但您应该添加逻辑来检查队列是否为空

路由策略的文档在这里

以及机上节流阀的代码