Service Fabric 来宾可执行文件托管和优雅停止
Service Fabric Guest Executable hosting and graceful stop
我有一个 .NET 4.6.2 控制台应用程序,我想在 Service Fabric 中托管。
我的应用程序正在监听管理任务的控制台输入事件。
最重要的是'q'停止应用程序 - 但以优雅的方式。
是否可以通过来宾可执行文件在 Service Fabric 中也具有此功能?
当然不是在 'q button pressed' 上,而是在服务删除或任何事件上。
如果无法实现与来宾可执行文件的这种集成 - 您建议在哪个项目模板上构建?
执行此操作的一种方法是在您完成服务后以编程方式删除该服务,使用 DeleteServiceAsync
您也可以使用 CreateServiceAsync
重新创建它
在你的有状态或无状态服务中class:
class MyService : StatefulService /* or StatelessService */
{
protected override Task OnCloseAsync(CancellationToken cancellationToken)
{
// your graceful shutdown code goes here
}
}
但是无法保证该方法的执行,例如当托管 VM 意外死亡时。
Service Fabric 在终止来宾可执行进程之前向其发送 Ctrl-C 信号,以允许正常关闭。您可以使用 Console.CancelKeyPress
事件或 Win32 SetConsoleCtrlHandler
函数来获取通知。请注意,必须将 exe 编译为控制台应用程序才能正常工作。
我有一个 .NET 4.6.2 控制台应用程序,我想在 Service Fabric 中托管。 我的应用程序正在监听管理任务的控制台输入事件。
最重要的是'q'停止应用程序 - 但以优雅的方式。
是否可以通过来宾可执行文件在 Service Fabric 中也具有此功能?
当然不是在 'q button pressed' 上,而是在服务删除或任何事件上。
如果无法实现与来宾可执行文件的这种集成 - 您建议在哪个项目模板上构建?
执行此操作的一种方法是在您完成服务后以编程方式删除该服务,使用 DeleteServiceAsync 您也可以使用 CreateServiceAsync
重新创建它在你的有状态或无状态服务中class:
class MyService : StatefulService /* or StatelessService */
{
protected override Task OnCloseAsync(CancellationToken cancellationToken)
{
// your graceful shutdown code goes here
}
}
但是无法保证该方法的执行,例如当托管 VM 意外死亡时。
Service Fabric 在终止来宾可执行进程之前向其发送 Ctrl-C 信号,以允许正常关闭。您可以使用 Console.CancelKeyPress
事件或 Win32 SetConsoleCtrlHandler
函数来获取通知。请注意,必须将 exe 编译为控制台应用程序才能正常工作。