0
sendResult = this.sendKernelImpl(msg, mq, communicationMode, sendCallback, topicPublishInfo, timeout - costTime);
endTimestamp = System.currentTimeMillis();
this.updateFaultItem(mq.getBrokerName(), endTimestamp - beginTimestampPrev, false);

当发送消息并且没有发生异常时,方法updateFaultItem()将被执行。但是它是一个可用的代理,为什么将它添加到faultItemTable???

4

1 回答 1

0

因为成功并不意味着足够健康,这意味着如果您有 2 个代理,并且您向他们发送大量消息并且所有消息都成功发送,但是,一个代理很慢,因此延迟很高。对于这种高延迟的broker,我们应该将其更新为fault item并隔离一段时间,以防badbroker恶化,那么客户端将享受到良好的发送体验。

但是 sendLatencyFaultEnable 默认设置为 false,您可以通过调用启用它setSendLatencyFaultEnable(true)

于 2020-04-30T02:45:53.303 回答