如何解决C#:启用自动恢复后,如何从RabbitMq的IModel软错误中安全恢复?
启用AutoRecovery
会自动处理soft errors吗?因为我们目睹了BasicPublish
无限期失败,原因码为403
的情况。
为什么403发生了?当发布者的特定实例称为identity server
时,很可能我们的transient error
短暂拥有一个BasicPublish
。但是identity server
肯定可以恢复并继续与200 allow
一起提供流量,我们知道这是因为我们有20个Publisher实例,每个实例都通过相同的主机,相同的交换和相同的共享连接到唯一队列身份,但只有一个实例开始无限期地返回403
以供随后对BasicPublish
的调用,而其他发布者实例则继续发布而没有问题。
那么403
从暂时问题中恢复后,为什么identity server
继续发生?我的猜测是尽管AutoRecovery
必须手动恢复soft errors
。
所以我看到了以下副作用:因为没有soft errors
的详尽列表,所以我看到两个问题:
- 如果我们仅手动恢复上面链接中列出的软件错误,那么我们将无法恢复未列出的软件错误,因此,就像我们所看到的那样,发布者的实例将停留在该死状态中
- 如果我们始终处置当前通道,而不管它是否由于软/硬错误而关闭,并且我们在其关闭处理程序中执行此操作,那么在将现有/关闭IModel实例处置在其{{1 }}处理程序,然后在
OnModelShutdown
触发OnModelShutdown
的错误时,例如出于AutoRecoverable
之类的原因,那么看来我们刚刚处置的320
实例即将由IModel
使用,可能会引起某种异常,例如AutoRecovery
,这可能会引起一些严重的问题,不是吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。