110,535
社区成员
发帖
与我相关
我的任务
分享
MessageQueue queue = new MessageQueue(".\\private$\\myQueue1", true);
MessageQueueTransaction transaction = new MessageQueueTransaction();
try
{
queue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) }); ;
int len = queue.GetAllMessages().Length;
// Receive message, 同步的Receive方法阻塞当前执行线程,直到一个message可以得到
while (len > 0)
{
if (queue.Transactional)
transaction.Begin();
System.Messaging.Message message = queue.Receive(new TimeSpan(0), transaction);
SqlConnection conn = new SqlConnection("Data Source=THTFCOMPUTER\\MSSQLSERVER1;Initial Catalog=test;Integrated Security=True;User Id=sa; Password=sa;");
SqlCommand cmd = new SqlCommand();
string sql = message.Body.ToString();
cmd.CommandText = sql;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
// 如果消息队列采用了事务,则停止事务
if (queue.Transactional)
{
transaction.Commit();
len--;
}
}
}
catch
{
if (queue.Transactional)
transaction.Abort();
}
finally
{
queue.Close();
queue.Dispose();
}