并发队列处理 之 MSMQ
来源:互联网 发布:java 时间戳长度 编辑:程序博客网 时间:2024/05/18 01:38
消息队列用于同步或者异步的高效处理消息队列,它应用的场景包括:
1)关键性的财务数据处理:例如,电子商务。
2)嵌入式和手持程序;
3)户外销售:例如,自动化销售程序;
4)工作流
消息队列不适合客户端和服务器端实时交互的场景,因为队列会出现一定的延迟现象。
MSMQ的实现包括一下几个元素:消息队列、发送器和接受器。消息队列包括公用消息队列、专用消息队列,管理消息队列等。消息队列的发送首先要创建队列,然后才能够发送消息,实例代码如下:
static void SendMessage()
{
try
{
string path = @"FormatName:Direct=TCP:192.168.0.115\private$\killf";
string localPath=@".\private$\killf";
MessageQueue queue;
if (MessageQueue.Exists(localPath))
{
queue = new MessageQueue(path);
}
else
{
queue = MessageQueue.Create(localPath);
}
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
queue.Send("hello world", "message");
Console.WriteLine(queue.FormatName);
Console.ReadKey();
}
catch (Exception ex)
{
throw ex;
}
}
{
try
{
string path = @"FormatName:Direct=TCP:192.168.0.115\private$\killf";
string localPath=@".\private$\killf";
MessageQueue queue;
if (MessageQueue.Exists(localPath))
{
queue = new MessageQueue(path);
}
else
{
queue = MessageQueue.Create(localPath);
}
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
queue.Send("hello world", "message");
Console.WriteLine(queue.FormatName);
Console.ReadKey();
}
catch (Exception ex)
{
throw ex;
}
}
注意:MessageQueue.Exists 该方法只能够处理本地的路径,不能够处理远程路径,参考链接:
接受消息时,首先获取消息队列,然后根据具体的队列进行操作,操作实例如下:
static void ReceiveMesage()
{
string path = "FormatName:Direct=TCP:192.168.0.115\\private$\\killf";
MessageQueue queue = new MessageQueue(path);
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
while (true)
{
Message message = queue.Receive();
if (message != null)
Console.WriteLine(message.Body.ToString());
}
Console.ReadKey();
}
}
{
string path = "FormatName:Direct=TCP:192.168.0.115\\private$\\killf";
MessageQueue queue = new MessageQueue(path);
queue.Formatter = new XmlMessageFormatter(new string[] { "System.String" });
while (true)
{
Message message = queue.Receive();
if (message != null)
Console.WriteLine(message.Body.ToString());
}
Console.ReadKey();
}
}
另外对于消息队列的处理最好是启动单独的服务和线程,以进行大数据的并发处理。
0 0
- 并发队列处理 之 MSMQ
- 队列工厂之(MSMQ)
- IPC之 - .Net 消息队列(MSMQ) 使用
- 【消息队列】MSMQ(二)——消息处理流程
- java多线程并发处理之阻塞队列LinkedBlockingQueue用法
- MSMQ--消息队列
- MSMQ--消息队列
- MSMQ(消息队列)
- 消息队列 MSMQ
- 消息队列(MSMQ)
- 消息队列MSMQ
- 消息队列(MSMQ)学习
- MSMQ--消息队列
- MSMQ消息队列安装
- MSMQ微软消息队列
- MSMQ消息队列安装
- MSMQ与redis队列
- .net 消息队列MSMQ
- 针对bootstrap没有多级导航栏的解决办法
- java排序之插入排序
- dSYM,app,crash 文件 UUID 匹配
- android recycleView使用总结
- 从零开始学 Java – Spring MVC 统一异常处理
- 并发队列处理 之 MSMQ
- [Leetcode] Range Sum Query 2D - Immutable
- 子元素的margin-top值会使父元素也出现margin-top值问题
- xcode8 升级后部分电脑注释快捷键不能使用的解决方法
- 有关minSdkVersion和targetSdkVersion
- 通过JDBC获取数据库连接
- KK版本手机没有外置T卡卡座,如何去掉外置T卡
- subversion edge
- 十四章上机练习4