public void Shutdown()
        {
            try
            {
                if (null != _declare_timer)
                {
                    _declare_timer.Elapsed -= _declare_timer_Elapsed;
                    _declare_timer.Stop();
                    _declare_timer.Dispose();
                }
            }
            catch { }
            _declare_timer    = null;
            _declare_scanning = false;

            try
            {
                if (null != _rabbit_timer)
                {
                    _rabbit_timer.Elapsed -= _rabbit_timer_Elapsed;
                    _rabbit_timer.Stop();
                    _rabbit_timer.Dispose();
                }
            }
            catch { }
            _rabbit_timer    = null;
            _rabbit_scanning = false;

            if (null != taaMQclient)
            {
                taaMQclient.OnMessageArrived -= TaaMQclient_OnMessageArrived;
                taaMQclient.Disconnect();
            }
            taaMQclient = null;

            if (null != todMQclient)
            {
                todMQclient.OnMessageArrived -= TodMQclient_OnMessageArrived;
                todMQclient.Disconnect();
            }
            todMQclient = null;

            if (null != server)
            {
                server.Dispose();
            }
            server = null;
            ReleaseOwinFirewall();

            // Shutdown database server.
            LocalDbServer.Instance.Shutdown();
        }
        public void Start()
        {
            _rabbit_scanning       = false;
            _rabbit_timer          = new System.Timers.Timer();
            _rabbit_timer.Interval = 1000;
            _rabbit_timer.Elapsed += _rabbit_timer_Elapsed;
            _rabbit_timer.Start();

            _declare_scanning       = false;
            _declare_timer          = new System.Timers.Timer();
            _declare_timer.Interval = 1000;
            _declare_timer.Elapsed += _declare_timer_Elapsed;
            _declare_timer.Start();

            MethodBase med = MethodBase.GetCurrentMethod();

            // Start database server.
            LocalDbServer.Instance.Start();

            if (null == server)
            {
                InitOwinFirewall();
                server = WebApp.Start <StartUp>(url: baseAddress);
            }

            if (null == taaMQclient)
            {
                var MQConfig = (null != ConfigManager.Instance.Plaza.TARabbitMQ) ?
                               ConfigManager.Instance.Plaza.TARabbitMQ.RabbitMQ : null;
                if (null != MQConfig && MQConfig.Enabled)
                {
                    //WriteTAFile("init");
                    med.Info("Rabbit Host Info: " + MQConfig.GetString());
                    try
                    {
                        taaMQclient                   = new RabbitMQClient();
                        taaMQclient.HostName          = MQConfig.HostName;
                        taaMQclient.PortNumber        = MQConfig.PortNumber;
                        taaMQclient.VirtualHost       = MQConfig.VirtualHost;
                        taaMQclient.UserName          = MQConfig.UserName;
                        taaMQclient.Password          = MQConfig.Password;
                        taaMQclient.OnMessageArrived += TaaMQclient_OnMessageArrived;
                        if (taaMQclient.Connect() && taaMQclient.Listen(MQConfig.QueueName))
                        {
                            med.Info("Success connected to : " + MQConfig.GetString());
                            med.Info("Listen to Queue: " + MQConfig.QueueName);
                        }
                        else
                        {
                            med.Err("failed connected to : " + MQConfig.HostName);
                        }
                    }
                    catch (Exception ex)
                    {
                        med.Err(ex);
                    }
                }
            }
            if (null == todMQclient)
            {
                var MQConfig = (null != ConfigManager.Instance.Plaza.TODRabbitMQ) ?
                               ConfigManager.Instance.Plaza.TODRabbitMQ.RabbitMQ : null;
                if (null != MQConfig && MQConfig.Enabled)
                {
                    //WriteTODFile("init");
                    med.Info("Rabbit Host Info: " + MQConfig.GetString());
                    try
                    {
                        todMQclient                   = new RabbitMQClient();
                        todMQclient.HostName          = MQConfig.HostName;
                        taaMQclient.PortNumber        = MQConfig.PortNumber;
                        todMQclient.VirtualHost       = MQConfig.VirtualHost;
                        todMQclient.UserName          = MQConfig.UserName;
                        todMQclient.Password          = MQConfig.Password;
                        todMQclient.OnMessageArrived += TodMQclient_OnMessageArrived;
                        if (todMQclient.Connect() && todMQclient.Listen(MQConfig.QueueName))
                        {
                            med.Info("Success connected to : " + MQConfig.GetString());
                            med.Info("Listen to Queue: " + MQConfig.QueueName);
                        }
                        else
                        {
                            med.Err("failed connected to : " + MQConfig.HostName);
                        }
                    }
                    catch (Exception ex)
                    {
                        med.Err(ex);
                    }
                }
            }
        }