DotNetMQ-基于C#和.NET框架的开源消息队列系统
2012-04-09 16:13
417 查看
DotNetMQ-基于C#和.NET框架的开源消息队列系统
这是一位NB的土耳其开发人员基于C#和.NET框架,编写的开源消息队列系统DotNetMQ。DotNetMQ消息组件支持消息可靠传输、路由、负载均衡、服务器部署图(Server Graphs)等等。企业级应用系统经常需要通过消息来进行沟通或集成,在Microsoft 平台,还有其他的类似解决方案,如MSMQ、BizTalk、SQL Server Service Broker等等,这些产品或解决方案有各自的特点和适用场景。这里推荐的DotNetMQ消息系统,也是其适应的业务场景。
DotNetMQ 消息系统特性列表:
Persistent or non-persistent messaging.
Guaranteed delivery of persistent messages even in a system crash.
Automatic and manual routing of messages in a custom machine graph.
Supports multiple databases (MySQL, SQLite, and memory-based storage for now).
Supports don’t store, direct send style messaging.
Supports Request/Reply style messaging.
Easy to use client library to communicate with the DotNetMQ Message Broker.
Built-in framework to easily construct RMI services upon message queues.
Supports delivering messages to ASP.NET Web Services.
GUI-based management and monitoring tool.
Easy to install, manage, and use.
Written entirely in C# (using .NET Framework 3.5).
在多个Server 之间自动路由消息:
EntLib.com Team 随后会提供针对DotNetMQ 消息队列系统在.NET项目中更详细的中文使用范例。
DotNetMQ的具体介绍和源码下载,请访问如下链接:
DotNetMQ: A Complete Message Queue System for .NET
DotNetMQ-基于C#和.NET框架的开源消息队列系统 – 安装部署及消息发送接收范例
关于DotNetMQ 开源消息队列系统的介绍,可参考如下文章:DotNetMQ-基于C#和.NET框架的开源消息队列系统
下面具体介绍如何安装、部署以及使用DotNetMQ 消息组件。
1. 先看看DotNetMQ 项目源码
DotNetMQ 项目是消息组件服务;MDSManager 项目消息组件的管理界面,用来配置系统中的客户端机器,如下图所示。
MDSCommonLib 项目是客户端系统需要引用的DLL程序集,使客户端系统可以和MDS 服务进行交互。
2. 部署DotNetMQ 服务
该服务编译的DLL程序集在如下目录 — DotNetMQ_Sources\DotNetMQ\bin\Debug
在CMD窗口中,在上述目录下,执行如下命令,安装部署 DotNetMQ 服务:
installutil dotnetmq.exe
看看安装好的DotNetMQ服务,并启动服务。
3. 注册和配置DotNetMQ 消息应用程序
在安装部署好DotNetMQ服务之后,开始运行MDSManager.exe 程序,添加和注册客户端应用程序,如下所示,添加Application1和Application2 应用程序。
如上图所示,添加好应用程序配置之后,可以到DotNetMQ_Sources\DotNetMQ\bin\Debug 目录下,查看MDSSettings.xml 配置文件:
?
在Visual studio 2010 开发工具下,编写2个简单的Console 应用程序:Application1和Application2。其中,Application1 用来发送消息;Application2 用来接收并显示消息。
在上述程序中,需要添加对 MDSCommonLib 程序集的引用,并且在代码中添加MDS.Client 命名空间的引用。
Application1 发送消息部分的代码如下:
?
?
在Application1的运行窗口,输入消息:
Hello, welcome to www.entlib.com ecommerce system
您好,欢迎访问 www.entlib.com 电子商务平台
启动Application2 应用程序,就可以在Application2的应用程序界面看到接收的消息,如下图所示。
最后,在Application1应用程序输入 exit 退出应用程序。当然在Application2 应用程序最后也可输入 exit 退出应用程序。
如果Application1应用程序启动,并发送消息;而Application2应用程序尚未启动,Application1发送的消息则默认存放在SQLite 数据库中,关于SQLite数据库的简单介绍,可参考:SQLite 开源的嵌入式关系数据库
参考链接:
DotNetMQ-基于C#和.NET框架的开源消息队列系统
SQLite 开源的嵌入式关系数据库
DotNetMQ-基于C#和.NET框架的开源消息队列系统 – 多实例发送和接收消息
在《DotNetMQ-基于C#和.NET框架的开源消息队列系统》一文中,简要介绍了DotNetMQ消息组件的功能。在《DotNetMQ-基于C#和.NET框架的开源消息队列系统 – 安装部署及消息发送接收范例》一文中,详细介绍了DotNetMQ消息组件的安装部署及消息发送接收范例,通过该范例,可以在实际项目中应用DotNetMQ 消息组件。
本文进一步演示一些多实例(Multiple Instance)场景。
针对上述范例,如果Application2 应用程序有多个实例在运行,到底哪一个Application2 应用程序实例接收到消息呢?
在这种情况下,DotNetMQ 将按顺序发送消息给对应的应用程序,如下图所示。
Application1发送的消息,会按顺序、逐个由三个Application2应用程序实例分别接收,但是每一个消息仅由一个应用程序实例接收,每一个应用程序实例接收不同的消息。其实,这一情况一般不太适合实际的业务场景。
下面在分析另一个业务场景,多个消息发送方,一个消息接收方。
如下图所示,有两个Application1 应用程序 – 发送消息给Application2;Application2 应用程序只有一个实例,会同时接收来自多个Application1应用程序实例的消息。
DotNetMQ 支持消息队列,不支持消息主题(Topic),因此消息仅仅发送给唯一一个接收者,而不是同时发送给多个实例。也就是说,DotNetMQ 支持“一个消息发送方 — 一个消息接收方”,而不是“一个消息发送方 — 多个消息接收方”。
MDSClient 仅仅根据应用程序名称来接收消息,DotNetMQ 消息组件和经典的发布/订阅(Pub/Sub)消息系统不一样哦。
其他参考链接:
DotNetMQ-基于C#和.NET框架的开源消息队列系统
相关文章推荐
- DotNetMQ-基于C#和.NET框架的开源消息队列系统 – 安装部署及消息发送接收范例
- Linux 下开源消息队列系统 RabbitMQ 安装使用
- 分享一个c#写的开源分布式消息队列equeue
- 基于C#语言开发的IM系统--界面赏析(通讯框架为networkcomms2.3.1)【即将开源】
- c#开源消息队列中间件EQueue 教程
- 开源消息队列系统 rabbitmq-server 安装详细
- EQueue - 一个C#写的开源分布式消息队列的总体介绍(转)
- 【转】【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
- 工业物联网或系统集成中应用消息队列(ActiveMQ,C#的demo)的场景全面分析
- 开源一个C# Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了
- HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务
- 【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)
- c#开源消息队列中间件EQueue 教程
- c#编写的基于Socket的异步通信系统--SanNiuSignal.DLL已开源
- 基于C#语言开发的IM系统--数据库结构图(通讯框架为networkcomms2.3.1)【即将开源】
- EQueue - 一个C#写的开源分布式消息队列的总体介绍
- 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享
- c#开源消息队列中间件EQueue 教程
- 开源一个C# Class实现Openfire登陆、推出、消息发送,方便其他系统集成IM功能了
- EQueue - 一个C#写的开源分布式消息队列的总体介绍