MSMQ(2)——.net下的消息队列管理空间

简介: System.Messaging 名字空间下包含了用于连接到、监视和管理网络上的消息队列,并发送、接收或查看消息的类。 其中一个主要的类是MessageQueue 它提供对消息队列上的消息进行访问。

System.Messaging 名字空间下包含了用于连接到、监视和管理网络上的消息队列并发送、接收或查看消息的类。

其中一个主要的类是MessageQueue

它提供对消息队列上的消息进行访问。

它有很多成员。例如

·Send方法用于向队列中写入消息。

·Receive,ReceiveById,ReceiveByCorrelationId方法用于从队列中读取消息。

·PeekReceive相似只是不更改队列内容就是在赢取消息时不会从队列中移除消息

·BeginPeek异步读取消息

还提供了其它功能

·创建和删除消息队列的队列

·通过枚举逐个访问队列中的消息

·通过枚举循环访问系统队列

·设置基于ACL访问权限

·使用连接缓存

另一个类是Message

Message类可以对消息进行详尽的控制且是队列接收或查看消息时使用的对象。除了消息正文外这个类的属性还包括确认设置格式化程序选择标识身份验证加密信息时间戳服务器日记不负死信队列的指示以及事务。

 

简单类型的发送与接收

1创建队列

private MessageQueue CreateQueue()

{

    string trPath=@".\Private$\SelfPrivateDemo";

    MessageQueue _queue;

    if (!MessageQueue.Exists(trPath))

       return MessageQueue.Create(trPath);

    _queue = new MessageQueue(trPath);

    return _queue;

}

这里创建队列对象然后可以通过队列进行发送和接收等操作。

2发送字符串

public void SendMessage(string strMsg)

{

    MessageQueue _queue = CreateQueue();

    Message _message = new Message(strMsg);

    _queue.Send(_message);   

}

3接收字符串

public string ReceiveMessage()

{

    MessageQueue _queue = CreateQueue();   

    Message _message=_queue.Receive();

_message.Formatter =

new XmlMessageFormatter(new Type[] { typeof(string) });

    return _message.Body.ToString();

}

这里解析队列消息时要用到格式化器

4测试

mm.SendMessage("Hello,");

 

这里在消息队列管理控制台中可以看到添加了队列消息可以查看一下它的内容

<?xml ver sion="1.0"?>

<string>Hello ,æ±</string>

大概是这段xml。因为传递消息用到了中文字符这里又采用了文字编码所以是乱码状态。

 

在接收时string strMsg = mm.ReceiveMessage();

会得到消息队列中的消息并按格式化器解析为正确的类型。

 

消息Message对象可以设置正文Body也可以设置和获取很多属性。

Console.WriteLine("消息标识{0}",_message.Id);      

Console.WriteLine("消息类型{0}", _message.MessageType.ToString());

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明博客园

目录
相关文章
|
4月前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
56 6
|
2月前
|
消息中间件 C# 数据安全/隐私保护
手写MSMQ微软消息队列收发工具类
【10月更文挑战第16天】本示例展示了如何使用C#语言编写MSMQ(微软消息队列)的收发工具类,包括发送和接收消息的方法。通过检查队列是否存在并创建、使用`MessageQueue`类发送和接收消息。示例还提供了简单的调用方式,并提醒用户注意权限管理和异常处理。
|
5月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
消息中间件 监控
十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法
搭建RabbitMQ简单通用的直连方法 如果还没有MQ环境,可以参考上一篇的博客: https://www.cnblogs.com/weskynet/p/14877932.html
730 0
十五、.net core(.NET 6)搭建RabbitMQ消息队列生产者和消费者的简单方法
|
消息中间件 存储 网络协议
|
消息中间件 Java 测试技术
MQ消息队列.NET SDK的使用
本文主要介绍.NET SDK的使用注意事项及用户可能遇到的问题。
MQ消息队列.NET SDK的使用
|
消息中间件 测试技术 开发工具
MQ消息队列.NET SDK的使用
MQ消息队列的SDK目前支持Java、C/C++及.NET三种语言,关于.NET SDK的使用目前因为版本更新的问题,用户在使用的过程中多少会出现这样或那样的问题,特别是SDK中example的使用问题。本文主要介绍.NET SDK的使用注意事项及用户可能遇到的问题。
6550 0
|
消息中间件 C#
【c#】队列(Queue)和MSMQ(消息队列)的基础使用
原文:【c#】队列(Queue)和MSMQ(消息队列)的基础使用       首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择。然后就写两个队列的简单应用。 Queue 命名空间     命名空间:System.Collections,不在这里做过多的理论解释,这个东西非常的好理解。
1501 0