Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

using Topshelf as windows service #5

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 93 additions & 82 deletions Forum.BrokerService/Bootstrap.cs
Original file line number Diff line number Diff line change
@@ -1,82 +1,93 @@
using System;
using System.Configuration;
using ECommon.Autofac;
using ECommon.Components;
using ECommon.Configurations;
using ECommon.JsonNet;
using ECommon.Log4Net;
using ECommon.Logging;
using EQueue.Broker;
using EQueue.Configurations;
using ECommonConfiguration = ECommon.Configurations.Configuration;

namespace Forum.BrokerService
{
public class Bootstrap
{
private static ILogger _logger;
private static ECommonConfiguration _ecommonConfiguration;
private static BrokerController _broker;

public static void Initialize()
{
InitializeECommon();
try
{
InitializeEQueue();
}
catch (Exception ex)
{
_logger.Error("Initialize EQueue failed.", ex);
throw;
}
}
public static void Start()
{
try
{
_broker.Start();
}
catch (Exception ex)
{
_logger.Error("Broker start failed.", ex);
throw;
}
}
public static void Stop()
{
try
{
if (_broker != null)
{
_broker.Shutdown();
}
}
catch (Exception ex)
{
_logger.Error("Broker stop failed.", ex);
throw;
}
}

private static void InitializeECommon()
{
_ecommonConfiguration = ECommonConfiguration
.Create()
.UseAutofac()
.RegisterCommonComponents()
.UseLog4Net()
.UseJsonNet()
.RegisterUnhandledExceptionHandler();
_logger = ObjectContainer.Resolve<ILoggerFactory>().Create(typeof(Bootstrap).FullName);
_logger.Info("ECommon initialized.");
}
private static void InitializeEQueue()
{
_ecommonConfiguration.RegisterEQueueComponents();
var storePath = ConfigurationManager.AppSettings["equeueStorePath"];
_broker = BrokerController.Create(new BrokerSetting(storePath));
_logger.Info("EQueue initialized.");
}
}
}
using System;
using System.Configuration;
using ECommon.Autofac;
using ECommon.Components;
using ECommon.Configurations;
using ECommon.JsonNet;
using ECommon.Log4Net;
using ECommon.Logging;
using EQueue.Broker;
using EQueue.Configurations;
using ECommonConfiguration = ECommon.Configurations.Configuration;
using Topshelf;

namespace Forum.BrokerService
{
public class Bootstrap : ServiceControl
{
private ILogger _logger;
private ECommonConfiguration _ecommonConfiguration;
private BrokerController _broker;

#region Initialize
private void Initialize()
{
InitializeECommon();
try
{
InitializeEQueue();
}
catch (Exception ex)
{
_logger.Error("Initialize EQueue failed.", ex);
throw;
}
}

private void InitializeECommon()
{
_ecommonConfiguration = ECommonConfiguration
.Create()
.UseAutofac()
.RegisterCommonComponents()
.UseLog4Net()
.UseJsonNet()
.RegisterUnhandledExceptionHandler();
_logger = ObjectContainer.Resolve<ILoggerFactory>().Create(typeof(Bootstrap).FullName);
_logger.Info("ECommon initialized.");
}
private void InitializeEQueue()
{
_ecommonConfiguration.RegisterEQueueComponents();
var storePath = ConfigurationManager.AppSettings["equeueStorePath"];
_broker = BrokerController.Create(new BrokerSetting(storePath));
_logger.Info("EQueue initialized.");
}

#endregion

public bool Start(HostControl hostControl)
{
try
{
Initialize();

_broker.Start();
return true;
}
catch (Exception ex)
{
_logger.Error("Broker start failed.", ex);
return false;
}
}

public bool Stop(HostControl hostControl)
{
try
{
if (_broker != null)
{
_broker.Shutdown();
}
return true;
}
catch (Exception ex)
{
_logger.Error("Broker stop failed.", ex);

return false;
}
}
}
}
Loading