Apache camel 驼峰节流
我试图在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
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中的机上消息数作为其度量。但您应该添加逻辑来检查队列是否为空 路由策略的文档在这里