#c# #windows-services #topshelf
#c# #windows-services #topshelf
Вопрос:
Я использую Topshelf для создания простой службы чтения MQ. Поскольку доступной документации мало, я столкнулся с некоторыми, вероятно, простыми вопросами, на которые, я надеюсь, получу ответы здесь:
1) В целом — было бы очень неплохо получить фактический экземпляр servicebase моего экземпляра service, поскольку существует множество методов, к которым я хотел бы получить доступ. Как я могу это сделать?
2) Когда вызывается onStop, я хотел бы сбросить MQ и быстро обработать оставшиеся сообщения. Однако доступ к MQ в OnClose вызывает исключение доступа к 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 — было бы очень неплохо иметь под рукой.
Спасибо за отличную библиотеку!
Комментарии:
1. Какую версию TopShelf вы используете?
Ответ №1:
https://github.com/Topshelf/Topshelf/wiki для документации также есть http://topshelf-project.com / но у нас на самом деле не так много документов там. Возможно, это также лучше обсудить для нашего списка рассылки.
-
Мы не раскрываем это, хотя, я думаю, возможно, что мы могли бы использовать новые события до и после установки (http://legomaster.net/2011/02/announcing-topshelf-2-2 /). Общая идея заключается в том, что все, что вам нужно будет установить, будет доступно через наш конфигурационный API. К каким элементам внимания, к которым, по вашему мнению, вы хотите получить доступ, которого у вас сейчас нет?
-
Какое исключение вы видите? В дизайне Topshelf нет ничего, о чем я знаю, что должно вызывать эту проблему.
-
CanPauseAndContinue
не установлено; напишите о проблеме в нашем сервисе отслеживания проблем на github, и я думаю, что это то, что можно решить.
Комментарии:
1. 3. «SetPausable» в настоящее время находится в запросе на извлечение: github.com/Topshelf/Topshelf/pull/92