private void init() { _redis = new RedisManager2<WeChatRedisConfig>(); MQManager.RegisterConsumerProcessor<NoticeMQConfig>(async delegate (BasicDeliverEventArgs ar, IModel channel) { try { var rawObject = BinarySerializationHelper.DeserializeObject(ar.Body) as NoticeMQ; var iso = new IsoDateTimeConverter(); iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; if(rawObject.Id == 0) { //放入sqlserver rawObject.Id = await NoticeHelper.SaveNoticeToSql(rawObject); if(rawObject.Id != 0) { //收信人的未读列表加1 await NoticeRedisOp.AddUnreadScore(rawObject.Receiver_Uuid, 1); //放入redis try { WeChatNoticeRedis redisObject = new WeChatNoticeRedis(); redisObject.Uuid = rawObject.Receiver_Uuid.ToString(); redisObject.Message = JsonConvert.SerializeObject(rawObject, iso); //redisObject.Message = BinarySerializationHelper.BytesToHexString( // BinarySerializationHelper.SerializeObject(rawObject)); await _redis.SaveObjectAsync(redisObject); } catch(Exception ex) { LogHelper.LogErrorAsync(typeof(NoticeService), ex); } } } else { //按照id修改sqlserver await NoticeHelper.SaveNoticeToSql(rawObject); //按照id修改redis try { WeChatNoticeRedis redisObject = new WeChatNoticeRedis(); redisObject.Uuid = rawObject.Receiver_Uuid.ToString(); redisObject.Message = JsonConvert.SerializeObject(rawObject, iso); //redisObject.Message = BinarySerializationHelper.BytesToHexString( // BinarySerializationHelper.SerializeObject(rawObject)); rawObject.status = 0; WeChatNoticeRedis originalRedisObject = new WeChatNoticeRedis(); originalRedisObject.Uuid = rawObject.Receiver_Uuid.ToString(); originalRedisObject.Message = JsonConvert.SerializeObject(rawObject, iso); //originalRedisObject.Message = BinarySerializationHelper.BytesToHexString( // BinarySerializationHelper.SerializeObject(rawObject)); if(!await _redis.ReplaceObjectInListAsync(redisObject, originalRedisObject)) LogHelper.LogInfoAsync(typeof(NoticeService), "替换失败"); } catch(Exception ex) { LogHelper.LogErrorAsync(typeof(NoticeService), ex); } } } catch (Exception ex) { LogHelper.LogErrorAsync(typeof(NoticeService), ex); //TODO:错误处理 } finally { channel.BasicAck(ar.DeliveryTag, false); System.Threading.Thread.Sleep(1); } }); MQManager.Prepare_All_C_MQ(); }
public async Task<HttpResponseMessage> PostAddContact([FromBody]DualParameter postParameter) { string openid = postParameter.openID; long itemId = postParameter.itemId; using(NoticeRepository noticeRepository = new NoticeRepository()) { Message m = await noticeRepository.GetNotice(itemId); NoticeMQ rawObject = new NoticeMQ(); rawObject.Id = m.ID; rawObject.MsgType = NoticeType.Contact_Request; rawObject.Relation_Uuid = m.RelationID_uuid; rawObject.Receiver_Uuid = m.Receiver_uuid; rawObject.PayLoad = m.MessageInfo; //改了 rawObject.status = 1; rawObject.TimeStamp = m.SendTime; var iso = new IsoDateTimeConverter(); iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; RedisManager2<WeChatRedisConfig> _redis = new RedisManager2<WeChatRedisConfig>(); WeChatNoticeRedis redisObject = new WeChatNoticeRedis(); redisObject.Uuid = rawObject.Receiver_Uuid.ToString(); redisObject.Message = JsonConvert.SerializeObject(rawObject, iso); //改回 rawObject.status = 0; rawObject.TimeStamp = DateTime.Now; WeChatNoticeRedis originalRedisObject = new WeChatNoticeRedis(); originalRedisObject.Uuid = rawObject.Receiver_Uuid.ToString(); originalRedisObject.Message = JsonConvert.SerializeObject(rawObject, iso); await _redis.ReplaceObjectInListAsync(redisObject, originalRedisObject); return WebApiHelper.HttpRMtoJson(null, HttpStatusCode.OK, customStatus.Fail); } }