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 配置文件:

<?xml version="1.0" encoding="utf-8"?>
<MDSConfiguration>
  
<Settings>
    
<Setting Key="ThisServerName" Value="this_server" />
    
<Setting Key="StorageType" Value="SQLite" />
  
</Settings>
  
<Servers>
    
<Server Name="this_server" IpAddress="127.0.0.1" Port="10905" Adjacents="" />
  
</Servers>
  
<Applications>
    
<Application Name="Application1" />
    
<Application Name="Application2" />
  
</Applications>
</MDSConfiguration>

 


 

4. 开发和运行客户端范例程序

在Visual studio 2010 开发工具下,编写2个简单的Console 应用程序:Application1和Application2。其中,Application1 用来发送消息;Application2 用来接收并显示消息。

在上述程序中,需要添加对 MDSCommonLib 程序集的引用,并且在代码中添加MDS.Client 命名空间的引用。

Application1 发送消息部分的代码如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MDS.Client;

namespace Application1
{
    
class Program
    {
        
static void Main(string[] args)
        {
            var mdsClient 
= new MDSClient("Application1");

            mdsClient.Connect();
            Console.WriteLine(
"输入文本,并按回车键传送消息给Application2,输入exit退出。");

            
while (true)
            {
                var messageText 
= Console.ReadLine();
                
if (string.IsNullOrEmpty(messageText) || messageText == "exit")
                {
                    
break;
                }

                var message 
= mdsClient.CreateMessage();
                message.DestinationApplicationName 
= "Application2";
                message.MessageData 
= Encoding.UTF8.GetBytes(messageText);
                message.Send();
            }

            mdsClient.Disconnect();
        }
    }
}

 

 

Application2 接收消息的代码如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MDS.Client;

namespace Application2
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
//Create MDSClient object to connect to DotNetMQ
            
//Name of this application: Application2
            var mdsClient = new MDSClient("Application2");

            
//Register to MessageReceived event to get messages.
            mdsClient.MessageReceived += MDSClient_MessageReceived;

            
//Connect to DotNetMQ server
            mdsClient.Connect();

            
//Wait user to press enter to terminate application
            Console.WriteLine("输入回车键退出...");
            Console.ReadLine();

            
//Disconnect from DotNetMQ server
            mdsClient.Disconnect();
        }

        
/// <summary>
        
/// This method handles received messages from other applications via DotNetMQ.
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e">Message parameters</param>
        static void MDSClient_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            
//Get message
            var messageText = Encoding.UTF8.GetString(e.Message.MessageData);

            
//Process message
            Console.WriteLine();
            Console.WriteLine(
"接收的消息 : " + messageText);
            Console.WriteLine(
"发送方应用程序 : " + e.Message.SourceApplicationName);

            
//Acknowledge that message is properly handled
            
//and processed. So, it will be deleted from queue.
            e.Message.Acknowledge();
        }
    }
}

 

 

启动Application1应用程序之后,再次查看MDSManager管理程序,发现Connected Clients由原来的 0 变成 1,说明现在有1个Application1应用程序连接到DotNetMQ服务了。

在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 开源的嵌入式关系数据库

posted on 2011-06-09 09:07  EntLib  阅读(5006)  评论(4编辑  收藏  举报