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
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
相关文章推荐
- ASP.NET中消息队列(MSMQ)初探
- NET中使用消息队列通讯
- Asp.net使用SignalR实现消息提醒
- RabbitMQ .NET消息队列使用入门(二)【多个队列间消息传输】
- asp.net微信开发第九篇----模板消息的使用
- 使用队列和线程对现有asp.net动态页处理进行资源控制
- ASP.NET--使用Socket发送和接收消息[转载]
- RabbitMQ .NET消息队列使用入门(三)【MVC实现RPC例子】
- Asp.net中建立MS office组件时出现“拒绝访问”和“消息筛选器显示应用程序正在使用中”错误的解决方法
- ASP.NET中使用MSMQ进行消息处理系列文章
- C#读取excel以及asp.net消息头的使用
- RabbitMQ .NET消息队列使用详解
- ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知的示例代码
- asp.net使用微信发布模版消息核心代码
- ASP.NET中消息队列(MSMQ)初探
- MSMQ(Microsoft Message Queue,微软消息队列) Asp.Net 简单示例
- RabbitMQ .NET消息队列使用详解
- CAP带你轻松玩转Asp.Net Core消息队列
- MSMQ(Microsoft Message Queue,微软消息队列) Asp.Net 简单示例
- .Net消息队列的使用