.net微软消息队列(msmq)简单案例

1.首先我们需要安装消息队列服务,它是独立的消息记录的服务,并保存在硬盘文件中。

我们添加名为:DMImgUpload的私有消息队列。

2.定义消息队列的连接字符串建议采用IP:

(1)FormatName:DIRECT=OS:Pac_gzf-PC\Private$\DMImgUpload

(2)FormatName:DIRECT=TCP:192.168.1.105\Private$\DMImgUpload

string queuePath="FormatName:DIRECT=TCP:192.168.1.105\Private$\DMImgUpload";

2.创建实例:【using System.Messaging;】

protected MessageQueueTransactionType transactionType = MessageQueueTransactionType.Automatic;//定义事务

MessageQueue queue = new MessageQueue(queuePath); //根据传入quueuPath创建队列
TimeSpan timeout = TimeSpan.FromSeconds(3);//设置读取消息间隔时间;
queue.DefaultPropertiesToSend.AttachSenderId = false;
queue.DefaultPropertiesToSend.UseAuthentication = false;
queue.DefaultPropertiesToSend.UseEncryption = false;
queue.DefaultPropertiesToSend.AcknowledgeType = AcknowledgeTypes.None;
queue.DefaultPropertiesToSend.UseJournalQueue = false;

3.

/// 接收消息方法
public virtual object Receive()
{
try
{
using (Message message = queue.Receive(timeout, transactionType))
return message;
}
catch (MessageQueueException mqex)
{
if (mqex.MessageQueueErrorCode == MessageQueueErrorCode.IOTimeout)
throw new TimeoutException();
throw mqex;
}
}

/// 发送消息【lable:消息标识,msq:消息】
public virtual void Send(string label, object msg)
{
   queue.Send(msg, label, transactionType);
}

5.备注:

当我们跨主机调用时会出现,消息队列权限提示,要在msmq中设置network service权限

消息队列存储可以使字符串,也可以使对象形式。

比如:我们定义一个对象:SolImgCreateModel。接受消息进行强制转换即可:

(SolImgCreateModel)((Message) Receive()).Body;

时间: 2024-08-09 10:10:43

.net微软消息队列(msmq)简单案例的相关文章

微软消息队列MSMQ 传输异常的总结!

公司线上环境99%是esxi的虚拟环境,随着公司线上虚拟机的增加,在部署虚拟机时我们一般都是采用模板才统一部署,当一个模板建立好后,新建虚拟机时就默认采用该模版运行,没有加入用户自定义环节. 由于公司为软件型企业且百分之九十采用的是微软的.net开发用户平台,由于平台的特殊性需要和多方面机构进行数据交换工作,根据开发的环境特点,选用的是微软系统自带的消息队列MSMQ进行数据传输, 随着msmq服务器越来越多的上线,而且会多台服务器往一台服务器上发送消息,最近频繁的发现一个问题,服务器服务正常,各

微软 消息队列 MessageQueue 简单使用

1.在服务电脑上打开 消息队列 ①进入控制面板>程序>启用或关闭windows功能 ②将需要的勾选(我自己全选了哈哈哈) ③我的电脑 右键 打开管理 见到消息队列 在专用队列上新建专用队列 ⑤填写名称还有选择是否是事务性 好到这里就基本准备完成 下面就要使用队列 来发送消息 //创建消息队列 并发送消息到队列 try { //连接到本地新创建的队列 MessageQueue myQueue = new MessageQueue(".\\private$\\test2");

WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ

之前曾经写过一个关于MSMQ消息队列的文章:WCF分布式开发必备知识(1):MSMQ消息队列 ,当时的目的也是用它来作为学习WCF 消息队列MSMQ编程的基础文章.在那篇文章里,我们详细介绍了MSMQ消息队列的基本概念.安装.部署.开发.调试等相关问题.今天我们来学习WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ.在WCF框架下使用MSMQ消息队列服务编程.  这里我会给出一个使用WCF MSMQ实现离线请求的DEMO示例程序. 全文结构是:[1]MSMQ基本概念[2]W

微软消息队列

转至网络: 事务性消息传递发送和接收应用程序表示要在一个事务范围内发送或检索消息,这称为事务性消息传递.在事务范围之外发送或检索消息称为非事务性消息传递.仅当采用一种使所有任务(包括非消息队列操作)全部成功或全部失败的方式执行任务时,才使用事务性消息. 事务的特点体现在其 ACID(原子性.持续性.隔离性.持久性)属性: 原子性.原子性指事务的全部行为或无行为.当事务包含一系列操作时,所有操作将被作为一个单独的操作对待,要么成功完成,要么根本不执行. 持续性.事务将系统从一个有效状态转换到另外一

【转】MSMQ 微软消息队列 简单 示例

MSMQ它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中:本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理. 我个人的理解,你可以把他当做一种,把数据打包后,发送到一个地方,程序也可以去取到这个打包的程序,队列的机制就不讲了,并发问题荡然无存.呵呵. 上代码: 首先 using System.Messaging; public class MsmqManagerHe

C# 消息队列-MSMQ

MQ是一种消息中间件技术,所以它能够支持多种类型的语言开发,同时也是跨平台的通信机制,也就是说MQ支持将信息转化为XML或者JSon等类型的数据存储到消息队列中,然后可以使用不同的语言来处理消息队列中的消息,这样就很容易的做到了信息的通信,同时也为信息的通信起到了缓冲的作用,经常会在金融项目中使用这种通信机制. 1 MQ安装 打开控制面板-"添加/删除程序" – "添加/删除 windows组件"步骤安装MSMQ. MSMQ可以安装为工作组模式或域模式.如果安装程序

详解.Net消息队列(MSMQ)应用

[IT168 技术文档]MSMQ是Windows 2000.Windows XP.Windows Server 2003的一个组件,并将继续包含在Windows Vista和以后的Windows服务器中.即使目标接收应用程序没有运行,或运行发送或接收应用程序的计算机没有联网,协同合作的应用程序仍能利用MSMQ在彼此之间发送和接收消息.在到达目标队列之前,消息由MSMQ存储并转发.接收应用程序能够从队列中恢复数据. MSMQ之类消息队列的主要特点在于它分离发送和接收应用程序,使其不必同时运行.这意

PetShop 4.0学习笔记:消息队列MSMQ

直到今天才知道,在我们每天都在用的Window系统里还有这么好用的一个编程组件:消息队列.它能够解决在大数据量交换的情况下的性能问题,特别是BS系统的数据库性能.而且它的异步处理方式能给程序员最大的便利与最好的用户体验. 1.首先在需要进行消息队列的服务器上安装MSMQ,我的系统是win2003+iis6,所以这个安装选项在添加删除程序->windows组件->应用程序服务器内.默认是不安装的,需要手动选择. 2.建立消息队列的存放路径.这可以在windows的计算机管理内添加,也可以在程序中

消息队列MSMQ的使用

1.MSMQ安装 控制面板-程序和功能-打开或关闭Windows功能-Microsoft Message Queue(MSMQ)服务器,选中所有,点击确定. 2.消息队列的应用场景(转载自http://www.cnblogs.com/stopfalling/p/5375492.html) ①异步处理 ②应用解耦 ③流量削锋 ④日志处理 ⑤消息通讯 3.MSMQ消息分为事务性和非事务性 非事务性的消息保存在内存中,机器重启后丢失消息队列中的消息. 事务性的消息经过了持久化,保存在硬盘中,机器重启后