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); } }