MSMQ
1.安装MSMQ
2.添加私有的队列
3.MSMQ可以发送的类型可以是任意类型,包括类
static string strServer = @"FormatName:Direct=TCP:10.7.46.42\private$\msmq";
static void Main(string[] args)
{
DeleteAllMessage();
SendMessage();
ReveiveMessage();
}
public static void DeleteAllMessage()
{
MessageQueue myQueue = new MessageQueue(strServer);
myQueue.Purge(); //删除此队列中包含的所有消息
myQueue.Dispose();
}
public static void SendMessage()
{
MessageQueue myQueue = new MessageQueue(strServer);
Message myMessage = new Message();
try
{
myMessage.Body = new Person() { Name = "jake", Age = 29, Birthday = Convert.ToDateTime("1987/07/20") };
myMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(Person) });
//设置消息发送的优先级别
myMessage.Priority = MessagePriority.Highest; //最高消息优先级
myQueue.Send(myMessage);
}
catch(Exception ex)
{
}
finally
{
myMessage.Dispose();
myQueue.Dispose();
}
}
public static void ReveiveMessage()
{
//连接到本地队列
MessageQueue myQueue = new MessageQueue(strServer);
myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(Person) });
Message myMessage = null;
try
{
int count = myQueue.GetAllMessages().Length;
//从队列中接收消息
//Peek: 返回队列中第一条消息的副本,而不从队列中移除该消息
//Receive: 接收队列中的第一条消息,但不将它从队列中移除
//PeekById: 返回具有指定消息标识符的消息的副本,但不从队列中移除消息
//ReceiveById: 接收匹配给定标识符的消息,并将其从队列中移除
myMessage = myQueue.Receive();
Person p = (Person)myMessage.Body; //获取消息的内容
Console.WriteLine("Name:" + p.Name);
Console.WriteLine("Age:" + p.Age.ToString());
Console.WriteLine("Birthday:" + p.Birthday.ToString("yyyy/MM/dd"));
count = myQueue.GetAllMessages().Length;
Console.ReadLine();
}
catch
{
Console.WriteLine("error4");
}
finally
{
myMessage.Dispose();
myQueue.Dispose();
}
}
MSMQ的更多相关文章
- MSMQ学习
一.理论准备 MSMQ(MicroSoft Message Queue,微软消息队列)官方的解释是:在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布 ...
- 基于ajax与msmq技术的消息推送功能实现
周末在家捣鼓了一下消息推送的简单例子,其实也没什么技术含量,欢迎大伙拍砖.我设计的这个推送demo是基于ajax长轮询+msmq消息队列来实现的,具体交互过程如下图: 先说说这个ajax长轮询,多长时 ...
- 已经过事务处理的 MSMQ 绑定(转载)
https://msdn.microsoft.com/zh-cn/biztalk/ms751493 本示例演示如何使用消息队列 (MSMQ) 执行已经过事务处理的排队通信. 注意 本主题的末尾介绍了此 ...
- 基于WCF MSMQ 的企业应用解决方案
最近研究了一下基于MSMQ的WCF应用,从书上.网上查了很多资料,但始终没能彻底理解WCF-MSMQ的工作原理,也没能得到一个合理的应用解决方案.索性还是自己做个实验,探索一下吧.经过反复试验,颇有收 ...
- 使用MSMQ 远程队列
------------------------------------------------------------------------------------------------- -- ...
- Redis学习笔记~实现消息队列比MSMQ更方便
什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队的顺序依次 ...
- 详解.Net消息队列(MSMQ)应用
[IT168 技术文档]MSMQ是Windows 2000.Windows XP.Windows Server 2003的一个组件,并将继续包含在Windows Vista和以后的Windows服务器 ...
- 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送
需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...
- MSMQ消息队列 用法
引言 接下来的三篇文章是讨论有关企业分布式开发的文章,这三篇文章筹划了很长时间,文章的技术并不算新,但是文章中使用到的技术都是经过笔者研究实践后总结的,正所谓站在巨人的肩膀上,笔者并不是巨人,但也希望 ...
随机推荐
- 介绍对称加密算法,最常用的莫过于DES数据加密算法
DES DES-Data Encryption Standard,即数据加密算法.是IBM公司于1975年研究成功并公开发表的.DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个 ...
- 点评前端开发工具cortex安装使用方法
cortex安装方法: 安装最新版 sudo npm install -g cortex cortex config set registry http://registry.cortexjs.org ...
- Java创建对象的几种方法
有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用n ...
- 10月24日下午PHP封装
class Ren { private $name; private $sex; private $age;//年龄必须在18-50岁之间 function __construct($n) { $th ...
- 如何刷新或清除HttpURLConnection的连接缓存
项目需要定期与远程服务器同步数据,基于如下代码: URL url = new URL("http://test.com/sales/info"); connection = (Ht ...
- C# 自定义Section
一.在App.config中自定义Section,这个使用了SectionGroup <?xml version="1.0" encoding="utf-8&quo ...
- Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
- JAVA关键字与保留字说明及使用
1.abstract 2.boolean 3.break 4.byte 5.case 6.catch 7.char 8.class 9.continue 10.default 11.do 12.dou ...
- CSS样式自动换行(强制换行)与强制不换行
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素,正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...
- 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...