MSMQ 消息队列创建以及使用-MSMQ(C#用法)
最编程
2024-08-06 17:53:27
...
向队列中写入消息
- 要注意的点就是路径中的大小写
- 消息使用Message类来传递
/// <summary>
/// 写入消息队列
/// </summary>
/// <param name="Msname">队列名称</param>
/// <param name="Message">队列消息</param>
public static void sendMessage(string Msname,string MessageStr)
{
//消息队列名
string path = string.Format(@".\private$\{0}", Msname);
//判断队列是否存在
if (!MessageQueue.Exists(path))
{
MessageQueue.Create(path);
}
MessageQueue queue = new MessageQueue(path);
Message message = new Message();
message.Body = MessageStr;
message.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
queue.Send(message);
}
获取队列中的消息
- Receive() 这种方式取数据,取出的数据在队列中会进行删除。
- Peek() 取出数据队列中不进行删除。(进行预览)
/// <summary>
/// 获取队列消息
/// </summary>
/// <param name="path">队列路径</param>
public static string GetQueryMessage(string path)
{
MessageQueue queue = new MessageQueue(path);
System.Messaging.Message msg = queue.Receive();
msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
return msg.Body.ToString();
}
获取队列中正在排队数
- 当然如果要获取所有的消息 可以使用GetAllMessages(),它所返回的是Message数组类型,遍历输出。
/// <summary>
/// 获取队列排队消息数量
/// </summary>
/// <param name="path">队列路径</param>
public static int GetQueryMessageCount(string path)
{
MessageQueue queue = new MessageQueue(path);
int count = queue.GetAllMessages().Length;
return count;
}
上一篇: 比较 MSMQ 与 MQTT 的异同点
下一篇: 用C#玩转MSMQ的教程