随笔 - 150  文章 - 0  评论 - 554  阅读 - 30万

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   EntLib  阅读(5006)  评论(4编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
历史上的今天:
2008-06-09 Apress最新推出精品:Pro ASP.NET 3.5 in C# 2008(第二版)
< 2011年6月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示