我正在尝试通过设置 ha-sync-batch-size 来调整 3 节点 rabbitmq 集群(配置中没有单独的负载均衡器)。 在玩了一下之后,我观察到故障转移的延迟似乎实际上随着批量大小设置的设置而增加。 似乎默认值(每条消息)在更快地切换到新的主节点时效果更好。 这是一般观察结果还是设置批大小还有其他注意事项?
为了测试,我使用的是具有 20-50 个并发用户的负载测试器。 并从主节点开始一次关闭一个节点。 通常,一些消息出错,然后新的主节点启动。 有没有更好的方法来减少新主节点选举的窗口?任何反馈将不胜感激。
我找到了答案。我未能发布我正在使用兔子模板。 我将一个重试模板连接到其中,如下所示:
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 次)足够的次数来发送请求。 如果有人有更好的主意,请发帖。谢谢