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

c#中如何操作消息队列

2015-09-29 21:34 615 查看
  “消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。

  消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

c#中发往消息队列中发送消息

public bool SendMessage(string title, string body)

{

MessageQueue SmsQueue = new MessageQueue();

try

{

string mqPath = System.Configuration.ConfigurationSettings.AppSettings["SiteEnvironmentMQPath"];//给基站告警用的(wz的程序)

string MQPath = string.Format(@"FormatName:DIRECT=TCP:{0}", mqPath);

SmsQueue.MessageReadPropertyFilter.Body = true;

SmsQueue.MessageReadPropertyFilter.AppSpecific = true;

SmsQueue.MessageReadPropertyFilter.Priority = true;

SmsQueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

SmsQueue.Path = MQPath;

Message objMsg = new Message();

objMsg.Label = title;

objMsg.Body = body;

SmsQueue.Send(objMsg);

     return true;

}

catch (Exception ex)

{

return false;

}

finally

{

SmsQueue.Close();

}

}

c# 从消息队列中取消息

public string ReceiveMessage(string mqPath)

{

string ret = "";

MessageQueue SmsQueue = new MessageQueue();

try

{

string MQPath = string.Format(@"FormatName:DIRECT=TCP:{0}", mqPath);

//string MQPath = System.Configuration.ConfigurationSettings.AppSettings["MQPath"];

SmsQueue.MessageReadPropertyFilter.Body = true;

SmsQueue.MessageReadPropertyFilter.AppSpecific = true;

SmsQueue.MessageReadPropertyFilter.Priority = true;

SmsQueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

SmsQueue.Path = MQPath;

Message objMsg = SmsQueue.Receive();

ret = objMsg.Body.ToString();

}

catch (Exception ex)

{

//LogClass.WriteLog("错误", DateTime.Now.ToString(), ex.Message, "从消息队列读取告警数据");

//System.Threading.Thread.Sleep(Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["sleepTime"]));

}

finally

{

SmsQueue.Close();

}

return ret;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: