Azure Service Fabric 指定 Service/Application 启动依赖项
Azure Service Fabric Specify Service/Application Startup Dependency
简单问一下,有没有办法在Azure Service Fabric中指定Service/Application启动依赖?
我有两个服务,比如 S1 和 S2。 S2依赖于S1,必须在S1启动后启动。目前 S1 和 S2 在不同的应用程序包下。如果有需要我也可以把它们放在一个应用程序包中。
如果我先启动 S1,然后在部署期间启动 S2,它就会工作。但是,Service Fabric 似乎有一些维护工作,在此期间服务会重新启动。现在的问题是S1和S2的启动顺序不保证,导致S2在初始化的时候读取某些配置失败。 S2 静默失败但保持 运行.
在 Service Fabric 中有指定 SetupEntryPoint 的方法”,但是在这种情况下,S1 本身有一个 "SetupEntryPoint",此外我觉得将长 运行 服务放在 [=23] 下是不合适的=].
我也在考虑让 S2 在无法从 S1 读取配置时停止,在这种情况下,Service Fabric 将继续尝试重新启动 S2,直到 S1 启动。
但是有什么方法可以通过 Service Fabric 配置保证 S2 在 S1 之后启动吗?
我也遇到了同样的问题。我认为仅通过 Service Fabric 配置是不可能的。
我最终想出的解决方案是重新设计服务,除非相关服务启动,否则它不会完全启动。在我的例子中,我的服务 A 依赖于服务 B。如果服务 A 先启动,它会向消息总线发送一条消息,并等待服务 B 回复。如果服务B已经启动,那么它会直接回复。如果服务 B 尚未启动,一旦启动它就会回复。然后,当服务 A 收到回复时,它将继续启动。这样总能真正完成启动。
另一种更简单的方法是,如果服务 B 已关闭,只需在服务 A 中抛出异常。Service Fabric 将尝试在另一个节点中启动应用程序,希望届时服务 B 已启动。不利的一面是第一次初始启动会非常慢(因为它会一直重试直到出现正确的顺序)而且你会看到很多错误(但最终会在所有服务完成启动后消失)
简单问一下,有没有办法在Azure Service Fabric中指定Service/Application启动依赖?
我有两个服务,比如 S1 和 S2。 S2依赖于S1,必须在S1启动后启动。目前 S1 和 S2 在不同的应用程序包下。如果有需要我也可以把它们放在一个应用程序包中。
如果我先启动 S1,然后在部署期间启动 S2,它就会工作。但是,Service Fabric 似乎有一些维护工作,在此期间服务会重新启动。现在的问题是S1和S2的启动顺序不保证,导致S2在初始化的时候读取某些配置失败。 S2 静默失败但保持 运行.
在 Service Fabric 中有指定 SetupEntryPoint 的方法”,但是在这种情况下,S1 本身有一个 "SetupEntryPoint",此外我觉得将长 运行 服务放在 [=23] 下是不合适的=].
我也在考虑让 S2 在无法从 S1 读取配置时停止,在这种情况下,Service Fabric 将继续尝试重新启动 S2,直到 S1 启动。
但是有什么方法可以通过 Service Fabric 配置保证 S2 在 S1 之后启动吗?
我也遇到了同样的问题。我认为仅通过 Service Fabric 配置是不可能的。
我最终想出的解决方案是重新设计服务,除非相关服务启动,否则它不会完全启动。在我的例子中,我的服务 A 依赖于服务 B。如果服务 A 先启动,它会向消息总线发送一条消息,并等待服务 B 回复。如果服务B已经启动,那么它会直接回复。如果服务 B 尚未启动,一旦启动它就会回复。然后,当服务 A 收到回复时,它将继续启动。这样总能真正完成启动。
另一种更简单的方法是,如果服务 B 已关闭,只需在服务 A 中抛出异常。Service Fabric 将尝试在另一个节点中启动应用程序,希望届时服务 B 已启动。不利的一面是第一次初始启动会非常慢(因为它会一直重试直到出现正确的顺序)而且你会看到很多错误(但最终会在所有服务完成启动后消失)