您的位置:首页 > 编程语言 > ASP

asp.net使用消息队列

2011-07-29 11:51 441 查看
使用消息队列的时候需要通过控制面板 安装删除程序添加windows消息队列.不然无法使用.

public bool OperateDB(string sqlString, out string systemState)
{
bool result = false;
systemState = "10000";
if (!string.IsNullOrEmpty(sqlString))
{
try
{
//设置消息队列
string strSMessageName = ConfigurationManager.AppSettings["SMessageName"].ToString(); //获取消息队列名次

if (!MessageQueue.Exists(strSMessageName)) //消息队列不存在就创建
{
MessageQueue.Create(strSMessageName);
MessageQueue mqTemp = new MessageQueue(strSMessageName);
mqTemp.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
}
MessageQueue MyQueue = new MessageQueue(strSMessageName);
MyQueue.Send(sqlString); //发送一个信息给消息队列
MyQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
MyQueue.ReceiveCompleted += new ReceiveCompletedEventHandler(MyReceiveCompleted);
MyQueue.BeginReceive();
result = true;
systemState = "10001";
}
catch (Exception)
{
systemState = "10005";
}

}
return result;
}

private void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
{
MessageQueue mq = (MessageQueue)source;
string sqlString = "";
SqlConnection sqlConn = null;
SqlCommand sqlComm = null;
try
{
Message ms = mq.EndReceive(asyncResult.AsyncResult);
sqlString = (string)ms.Body;
//SQL语句处理
//创建连接对象
sqlConn = DBFactory.Instance.DBConnection;
sqlConn.Open();
sqlComm = new SqlCommand(sqlString);
sqlComm.Connection = sqlConn;
int count = sqlComm.ExecuteNonQuery();

}
catch (Exception exp)
{
AppLog.Write("SQL(" + sqlString + ")执行出现异常:", AppLog.LogMessageType.Fatal, exp);
}
finally
{
sqlConn.Close();
sqlComm = null;
GC.Collect();
mq.BeginReceive();
}
return;
}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: