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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值