使用TopShelf创建一个简单的MQ窗口服务
本文关键字:简单 MQ 窗口 服务 一个 创建 TopShelf 使用 | 更新日期: 2023-09-27 17:53:25
我使用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项目的文档吗?如果有的话就太好了。
谢谢你的图书馆!
https://github.com/Topshelf/Topshelf/wiki有文档,也有http://topshelf-project.com/但是我们没有太多的文档。这可能是我们邮件列表中更好的讨论。
-
我们不暴露,虽然我想这是可能的,我们可以通过新的预安装和后安装事件(http://legomaster.net/2011/02/announcing-topshelf-2-2/)。一般的想法是,您需要设置的任何内容都将通过我们的配置API公开。有哪些注意力项目是你想要而现在却没有的?
-
你看到了什么异常?据我所知,在Topshelf的设计中没有任何东西会导致这个问题。
-
CanPauseAndContinue
未设置;在github上的问题跟踪器中删除一个问题,我认为这是可以解决的。