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;
}
消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
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;
}
相关文章推荐
- C#几个经常用到的字符串截取
- C#动态属性(.NET Framework4.5支持)
- params关键字[C#]
- 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法
- 从反编译的角度去观察C#6.0
- C#获取枚举描述代码
- 正则表达式判断金额
- C#编程规范
- UDP Sockets in C#
- C# .Net并行(多核)编程
- C#读取一个文件夹下的子文件甲中的文件名
- c#中复制文件到粘贴板
- 佳能相机的拍照应用开发canon EDSDK C#
- 【穷举】用c#实现一个数组(1,1,2,2,3,3,4,4)排列,每两个相同数字中间都间隔了这个数字个数
- C#里边的控件缩写大全(比较规范)
- C#学习视频分享与开发技术QQ交流群
- C#学习视频分享与开发技术QQ交流群
- c#集合类汇总(下)
- 欢迎进群大家以后一起交流 C#、.Net技术交流群 242497960
- 欢迎进群大家以后一起交流 C#、.Net技术交流群 242497960