【发布时间】:2019-05-29 23:20:33
【问题描述】:
有时,大约 10000 个兔子应答中的 1 个我无法正确应答。
在我确认message A 时失败的情况下,我也没有例外。似乎一切都很顺利。当我进入下一个message B 时,我得到了异常System.IO.EndOfStreamException: SharedQueue。堆栈跟踪表明在 RabbitMQ.Util.SharedQueue.EnsureIsOpen() 中引发了异常,这是私有方法。
有一个问题 - A message 未被确认!我ack的时候也没有异常,但是还是没有ack!两个应用程序获得相同消息的可能性很小。有什么我可以做的吗?
我已经尝试更改一些设置,例如:
AutomaticRecoveryEnabled = true;
RequestedHeartbeat = 60;
NetworkRecoveryInterval = TimeSpan.FromSeconds(10);
并在每次确认之前编写了一个测试连接的方法:
public bool HasFullConnection() {
if (!HasServerConnection(Config.ConnectionConfig.HostAddress)) return false;
if (!RabbitMQConnection.IsOpen) return false;
if (!RabbitMQClient.IsOpen) return false;
return true;
}
不幸的是 - 问题仍然存在。
【问题讨论】:
-
让我们知道您经纪人的日志文件中的内容非常有帮助。