private IQueueSubscriber CreateSubscriber()
        {
            try
            {
                var providerSetting = _configuration["MessageQueueSetting:Provider"];
                var provider        = Common.ParseEnum <QueueProvider>(providerSetting);

                switch (provider)
                {
                case QueueProvider.GOOGLE:

                    var googleSetting = new GoogleQueueSetting();
                    var settingPath   = _configuration.GetSection("MessageQueueSetting:GoogleQueueSetting");
                    settingPath.Bind(googleSetting);

                    return(QueueEngineFactory.CreateGoogleSubscriber(provider, googleSetting, "EmailQueueSub", MesageHandler));

                    //
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
            }

            return(default);
        private List <IQueuePublisher <OrderQueue> > CreatePublisher()
        {
            try
            {
                List <IQueuePublisher <OrderQueue> > queuePublishers = new List <IQueuePublisher <OrderQueue> >();
                var providerSetting = _configuration["MessageQueueSetting:Provider"];
                var provider        = Common.ParseEnum <QueueProvider>(providerSetting);

                switch (provider)
                {
                case QueueProvider.GOOGLE:

                    var googleSetting = new GoogleQueueSetting();
                    var settingPath   = _configuration.GetSection("MessageQueueSetting:GoogleQueueSetting");
                    settingPath.Bind(googleSetting);
                    googleSetting.CredentialFile = Path.Combine(_environment.ContentRootPath, googleSetting.CredentialFile);

                    queuePublishers.Add(QueueEngineFactory.CreateGooglePublisher <OrderQueue>(provider, googleSetting, "SmSQueue"));
                    queuePublishers.Add(QueueEngineFactory.CreateGooglePublisher <OrderQueue>(provider, googleSetting, "EmailQueue"));
                    queuePublishers.Add(QueueEngineFactory.CreateGooglePublisher <OrderQueue>(provider, googleSetting, "StockQueue"));
                    queuePublishers.Add(QueueEngineFactory.CreateGooglePublisher <OrderQueue>(provider, googleSetting, "ShippingQueue"));
                    break;
                }

                return(queuePublishers);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
            }

            return(default);