使用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项目的文档吗?如果有的话就太好了。

谢谢你的图书馆!

使用TopShelf创建一个简单的MQ窗口服务

https://github.com/Topshelf/Topshelf/wiki有文档,也有http://topshelf-project.com/但是我们没有太多的文档。这可能是我们邮件列表中更好的讨论。

  1. 我们不暴露,虽然我想这是可能的,我们可以通过新的预安装和后安装事件(http://legomaster.net/2011/02/announcing-topshelf-2-2/)。一般的想法是,您需要设置的任何内容都将通过我们的配置API公开。有哪些注意力项目是你想要而现在却没有的?

  2. 你看到了什么异常?据我所知,在Topshelf的设计中没有任何东西会导致这个问题。

  3. CanPauseAndContinue未设置;在github上的问题跟踪器中删除一个问题,我认为这是可以解决的。