【问题标题】:Rabbitmq HA synchronizationRabbitmq HA 同步
【发布时间】:2016-05-10 12:46:10
【问题描述】:

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

【问题讨论】:

  • 这个问题非常不清楚 - 我完全无法弄清楚答案与问题的关系。
  • 我想我应该把问题分成两部分。第 1 部分应该是如何通过配置优化同步。第 2 部分应该是 - 因为我在尝试使用批量大小进行优化时的观察并不能减少故障转移时间,应该做些什么。我找到的解决方案不是通过调整配置,而是在发生故障转移时使用客户端多次重试。希望能澄清问题。
  • 它可能 - 我仍然无法理解“通过配置优化同步”的意思 - 你遇到的问题不容易弄清楚。有没有办法澄清具体问题?

标签: rabbitmq high-availability failover failovercluster


【解决方案1】:

我想我找到了答案。我没有发布我正在使用 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 次)足够的次数来发送请求。如果有人有更好的想法,请发布。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多