public static void Publish <T>(T data, ProcessType processType = ProcessType.Topic)
        {
            var type = data.GetType().AssemblyQualifiedName;

            RedisServices.HashSet(_keyListChannelName, new KeyValuePair <string, string>(type, processType.ToString()));

            string queueDataName = GetKeyQueueDataForChannel(type);

            RedisServices.TryEnqueue(queueDataName, JsonConvert.SerializeObject(data));
        }
        static void TryDoJob(string typeFullAssemblyQualifiedName, string data, Action <object> handle)
        {
            var type      = typeFullAssemblyQualifiedName;
            var queueName = GetKeyQueueDataForChannel(type);

            try
            {
                var jobj       = JsonConvert.DeserializeObject(data) as Newtonsoft.Json.Linq.JObject;
                var objectType = Type.GetType(type, false, true);

                var o = jobj.ToObject(objectType);

                handle(o);

                string successQueueDataName = queueName + "_Success";
                RedisServices.TryEnqueue(successQueueDataName, data);
                Thread.Sleep(1);
            }
            catch (Exception ex)
            {
                string errorQueueDataName = queueName + "_Error";
                RedisServices.TryEnqueue(errorQueueDataName, data);
            }
        }