public static void RegUserServer(string userID, string topicID, string producerID) { SysUser user = new SysUser(); user.Id = userID; user.Status = 1; using (SqlConnection connection = DBConnectionMgr.GetUserConnection()) { using (SqlTransaction transaction = connection.BeginTransaction()) { new SysUserDbSvc(connection).Insert(user, transaction); SysMessageQueue sysMQ = new SysMessageQueue() { Id = Guid.NewGuid().ToString(), Keys = Guid.NewGuid().ToString(), MsgCont = userID, Status = OnsMQDefine.SysMessage_Status_UnSend, Tags = OnsMQDefine.MessageTag_TestLog,//tag 看业务需要,可以不传入,为查询方便,建议传入 ProducerID = producerID, TopicID = topicID }; new SysMessageQueueDbSvc(connection).Insert(sysMQ, transaction); transaction.Commit(); } } }
/// <summary> /// 发送消息到 aliMQ,同时修改系统发送状态 /// </summary> /// <param name="sysMQ">系统MQ消息记录</param> public void SendMessage(SysMessageQueue sysMQ) { using (SqlConnection connection = DBConnectionMgr.GetUserConnection()) { using (SqlTransaction transaction = connection.BeginTransaction()) { SysMessageQueueDbSvc sysMQDbSvc = new SysMessageQueueDbSvc(connection); sysMQ.Status = OnsMQDefine.SysMessage_Status_Sent; sysMQDbSvc.UpdateStatus(sysMQ, transaction); //根据 Key 查询,如果OnsMQ服务器上补存在消息,重发 //if (string.IsNullOrEmpty(GetMessageByKey(sysMQ.Keys))) //{ //发送消息 if (SendMessageToAliMQ(sysMQ.MsgCont, sysMQ.Tags, sysMQ.Keys)) { transaction.Commit(); } else { transaction.Rollback(); } //} //else { transaction.Commit(); } } } }
public void Insert(SysMessageQueue info, SqlTransaction transaction) { using (EnsureUserConnection()) { DbConnection.Execute(@"Insert SysMessageQueue(Id, Tags, Keys, MsgCont, Status, ProducerID, TopicID) values (@Id, @Tags, @Keys, @MsgCont, @Status, @ProducerID, @TopicID)", info, transaction); } }
public void UpdateStatus(SysMessageQueue info, SqlTransaction transaction = null) { using (EnsureUserConnection()) { DbConnection.Execute(@"Update SysMessageQueue Set Status = @Status Where Id = @Id", info, transaction); } }
public void Update(SysMessageQueue info) { using (EnsureUserConnection()) { DbConnection.Execute(@"Update SysMessageQueue Set Tags = @Tags, Keys = @Keys, MsgCont = @MsgCont, Status = @Status ProducerID = @ProducerID, TopicID = @TopicID, Where Id = @Id", new { Id = info.Id, Tags = info.Tags, Keys = info.Keys, MsgCont = info.MsgCont }); } }