我正在使用 Topshelf 创建一个简单的 MQ 阅读服务。由于可用的文档很少 - 我遇到了一些可能很简单的问题,希望在这里得到解答:
1) 通常 - 获得我的服务实例的实际 servicebase 实例会非常好,因为有一堆我想访问的方法。我怎样才能做到这一点?
2)当调用 OnStop 时,我想刷新 MQ 并快速处理剩余的消息。但是,在 OnClose 中访问 MQ 会引发 MQ 访问异常——这是设计使然,还是?
3) 我在配置器中指定了 OnPause 和 OnContinue 重载。但是 - 服务未启用暂停/继续,因为未设置 AllowPauseAndContinue 标志。最好的方法是什么?
var retVal = HostFactory.New( x =>
{
x.Service<ASForwardMessageService>( s =>
{
s.SetServiceName( s_ServiceName );
s.ConstructUsing( name => CreateService() );
s.WhenStarted( tc => tc.OnStart() );
s.WhenStopped( tc => tc.OnStop() );
s.WhenPaused( tc => tc.OnPause() );
s.WhenContinued( tc => tc.OnContinue() );
} );
x.RunAsLocalSystem();
x.DependsOnMsmq();
x.StartAutomatically();
x.SetDescription( s_Description );
x.SetDisplayName( s_DisplayName );
x.SetServiceName( s_ServiceName );
} );
顺便说一句 - 是否有任何可用于 Topshelf 项目的文档 - 很高兴有。
感谢一个很棒的图书馆!