0

我正在尝试通过设置ha-sync-batch-size来调整 3 节点 rabbitmq 集群(配置中没有单独的负载均衡器)。在玩弄它之后,我观察到故障转移的延迟似乎实际上随着批量大小设置的设置而增加。似乎默认值(每条消息)在更快地切换到新的主节点时效果更好。这是一般观察还是设置批量大小有其他考虑因素?
为了测试,我使用了一个有 20-50 个并发用户的负载测试器。并从主节点开始一次关闭一个节点。通常,一些消息出错,然后新的主节点启动。有没有更好的方法来减少新的主节点选举的窗口?对于任何反馈,我们都表示感谢。

4

1 回答 1

0

我想我找到了答案。我没有发布我正在使用 RabbitTemplate。我将 RetryTemplate 连接到其中,如下所示:

public @Bean RabbitTemplate templateFactory(){
    log.debug("Creating an template  factory.....");
    RabbitTemplate r=new RabbitTemplate(connectionFactory);
    r.setExchange(rabbitExchange);
    r.setRoutingKey(rabbitBinding);
    r.setRetryTemplate(retryTemplate());
    return r;
}

@Bean RetryTemplate retryTemplate(){
    RetryTemplate retryTemplate = new RetryTemplate();
    ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
    backOffPolicy.setInitialInterval(500);
    backOffPolicy.setMultiplier(10.0);
    backOffPolicy.setMaxInterval(5000);
    retryTemplate.setBackOffPolicy(backOffPolicy);
    SimpleRetryPolicy policy=new SimpleRetryPolicy();
    policy.setMaxAttempts(3);

    retryTemplate.setRetryPolicy(policy);
    return retryTemplate;
}

而且,spring 非常可靠地重试(在这种情况下为 3 次)足够的次数来发送请求。如果有人有更好的想法,请发布。谢谢

于 2016-02-01T23:00:53.847 回答