微软 消息队列 MessageQueue 简单使用
1.在服务电脑上打开 消息队列
①进入控制面板》程序》启用或关闭windows功能

②将需要的勾选(我自己全选了哈哈哈)

③我的电脑 右键 打开管理 见到消息队列 在专用队列上新建专用队列

⑤填写名称还有选择是否是事务性

好到这里就基本准备完成
下面就要使用队列 来发送消息
//创建消息队列 并发送消息到队列
try
{
//连接到本地新创建的队列
MessageQueue myQueue = new MessageQueue(".\\private$\\test2");
//创建一个消息
System.Messaging.Message myMessage = new System.Messaging.Message();
//给消息体赋值
myMessage.Body = "你好我是消息体";
myMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
//发送消息到队列中(创建队列时勾选了事务性之后 不能直接使用 public void Send(object obj) 这个方法 因为其不支持事务) // 我要使用下面这个支持事务的发送方法
myQueue.Send(myMessage,System.Messaging.MessageQueueTransactionType.Single); }
catch (ArgumentException ex)
{
Console.WriteLine(ex.Message);
}
发完消息之后就要接收消息
消息的接受使用Receive()方法
但是该方法会阻塞线程
所以建议将其放到一个独立的线程中,不让其影响其他线程的运行
//创建一个任务 让其不断的在接收消息队列发出的消息
Task t = Task.Factory.StartNew(() => {
while (true)
{
//创建队列 要跟发消息的队列同一个名称
MessageQueue mq = new MessageQueue(@".\private$\test2"); // 如果不用多线程就会阻塞在Receive
System.Messaging.Message m = mq.Receive(); //定义内容格式
m.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) }); //接收到消息后 回去更新主线程的UI界面
Action<String> AsyncUIDelegate = delegate (string n)
{
this.ReceiveText2.Text = n; //对ui的操作
};//定义一个委托
this.ReceiveText2.Invoke(AsyncUIDelegate, new object[] { m.Body.ToString() });
}
});
测试效果:

啊啊啊啊 要记住勾选了事务性 不要用send(object ) 这个方法呀
微软 消息队列 MessageQueue 简单使用的更多相关文章
- 微软消息队列MessageQueue(MQ)
首先本地安装微软的消息队列服务器. 基础类: namespace Core.MessageQueueTest { public class TestQueue : IDisposable { prot ...
- .Net下的MSMQ(微软消息队列)的同步异步调用
一.MSMQ简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列 和电子邮件有着很多相似处,他们都包含多个属性, ...
- 微软消息队列-MicroSoft Message Queue(MSMQ)队列的C#使用
目录 定义的接口 接口实现 建立队列工厂 写入队列 获取消息 什么是MSMQ Message Queuing(MSMQ) 是微软开发的消息中间件,可应用于程序内部或程序之间的异步通信.主要的机制是:消 ...
- 【转】MSMQ 微软消息队列 简单 示例
MSMQ它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中:本地或者是异地的消息接收程 ...
- .net微软消息队列(msmq)简单案例
1.首先我们需要安装消息队列服务,它是独立的消息记录的服务,并保存在硬盘文件中. 我们添加名为:DMImgUpload的私有消息队列. 2.定义消息队列的连接字符串建议采用IP: (1)FormatN ...
- linux 进程学习笔记-消息队列messagequeue
可以想象,如果两个进程都可以访问同一个队列:其中一个进程(sender)向其中写入结构化数据,另外一个进程(receiver)再从其中把结构化的数据读取出来.那么这两个进程就是在利用这个队列进行通信了 ...
- kafka消息队列的简单理解
kafka在大数据.分布式架构中都很流行.kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列. 本篇主要是消息队列相关的知识. 零.kafka作为消息队列的优点: 分布式的系统 高吞吐 ...
- 消息队列_MSMQ(1)简单了解
MSMQ (微软消息队列) MSMQ 百度百科 MicroSoft Message Queuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一 ...
- redis消息队列简单应用
消息队列出现的原因 随着互联网的高速发展,门户网站.视频直播.电商领域等web应用中,高并发.大数据已经成为基本的标识.淘宝双11.京东618.各种抢购.秒杀活动.以及12306的春运抢票等,他们这些 ...
随机推荐
- Springl利用Aspectj的扩展实现Aop
1. Spring为什么要使用Aspectj Spring Aop:Spring自己原生的Aop,只能用一个词来形容:难用. 你需要实现大量的接口,继承大量的类,所以spring aop一度被千夫所指 ...
- java.lang.Class.isAssignableFrom()用法解析
一.概述: 此方法主要用来判断 "参数类" 是否是 "源类" 的子类.接口实现类,或者与 "源类" 相同,在此情况下返回 true; 二.格 ...
- 让linux开机默认开启小键盘
linux默认开机不开启数字键盘numberlock,每次输入开机密码还得劳烦自己去点亮指示灯,让此灯开机自动点亮,需要一个软件才行,就是numlockx了,可以通过yum安装:yuminstall ...
- Android经典的设计模式
[单例模式][Build模式][原型模式][工厂模式][策略模式][状态模式][责任链模式][解释器模式][命令模式][观察者模式][备忘录模式][迭代器模式] [模板方法模式][访问者模式][中介者 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- react-native-vector-icons的简单使用,图片,按钮,标签视图,导航条
ICONS是可以直接使用图片名, 就能加载图片的三方,使用很方便, 你不需要在工程文件夹里塞各种图片, 节省很多空间,下面就来看看怎么使用吧! 1. 首先打开terminal进入到我们的工程文件夹下, ...
- C#使用ADO.NET访问数据库(一)
博主好久没更新博客了,最近有点忙(打麻将0.0..),今天更新一篇C#的,我还是想坚持更新博客,分享一下自己的心得,闲话少说,开始正题~~ ADO.NET概述:ADO.NET的作用在于他是客户端访问服 ...
- Linux系统sar命令解析
安装 如果系统没有该命令请安装: apt-get install sysstat yum install sysstat 安装完毕: vi /etc/default/sysstat ENABLED=& ...
- Yii2 vendor出现bower-asset这么解决
yii\base\InvalidParamException: The file or directory to be published does not exist: /data/wwwroot/ ...
- 为什么现在我最终推荐内存OLTP
在今年的8月份,我写了篇文章,介绍了我还不推荐用户使用内存OLTP的各个理由.近日很多人告诉我,他们有一些性能的问题,并考虑使用内存OLTP来解决它们. 众所皆知,在SQL Server里内存OLTP ...