我有一个ASP.NET应用程序,它利用SingleInstance()
服务客户端(通过VNET连接到集群),在应用程序启动时我有5秒延迟/重试/延迟/重试循环来初始化服务,但是一旦它初始化了autofac就会占用我的服务客户端并随之运行。
我的问题是,如果我的服务客户端失去了通过VNET的连接,我如何强制Autofac重用我的初始化逻辑?这可能是以惯用的自动方式做的吗?
这是初始化代码:
builder.Register(c => ClusterClient.Initialize(timeout: 5/*seconds*/)).SingleInstance();
答案 0 :(得分:0)
首先,无论ClusterClient.Initialize()
返回什么,您都需要配置Autofac来解析对该特定类的依赖关系,这意味着某些类对该类型的任何内容都具有硬依赖性。
要解决这个问题,请执行以下操作:
ClusterClient.Initialize()
并管理该方法返回的内部实例。该类还可以处理重试逻辑。 ClusterClient.Initialize()
返回的任何课程,请将其修改为取决于您的新界面。现在你的类取决于抽象,你的容器不必关心重试逻辑。
至于重试逻辑本身,Polly是一个Nuget包,可以很容易地定义重试策略。