DotNetMQ是一个新的、独立的、开源的,完全基于C#和.NET Framework3.5的消息队列系统

下载源代码 - 1.28 MB

下载二进制文件 - 933 KB

下载例子 - 534 KB

下面具体介绍如何安装、部署以及使用DotNetMQ 消息组件。

1. 先看看DotNetMQ 项目源码

DotNetMQ 项目是消息组件服务;MDSManager 项目消息组件的管理界面,用来配置系统中的客户端机器。

MDSCommonLib 项目是客户端系统需要引用的DLL程序集,使客户端系统可以和MDS 服务进行交互。

2. 部署DotNetMQ 服务

该服务编译的DLL程序集在如下目录 — DotNetMQ_Sources\DotNetMQ\bin\Debug,该项目的System.Data.SQLite.dll是x86,所以可以考虑把项目改为x86平台

在CMD窗口中,在上述目录下,执行如下命令,安装部署 DotNetMQ 服务:

installutil dotnetmq.exe

看看安装好的DotNetMQ服务,并启动服务。

3. 注册和配置DotNetMQ 消息应用程序

在安装部署好DotNetMQ服务之后,开始运行MDSManager.exe 程序,添加和注册客户端应用程序,如下所示,添加Application1和Application2 应用程序。

下载后的FirstApplication运行结果如下:

相关Code:

using System;
using System.Text;
using MDS.Client; namespace Application1
{
class Program
{
static void Main()
{
//Create MDSClient object to connect to DotNetMQ
//Name of this application: Application1
var mdsClient = new MDSClient("Application1"); //Connect to DotNetMQ server
mdsClient.Connect(); Console.WriteLine("Write a text and press enter to send to Application2. Write 'exit' to stop application."); while (true)
{
//Get a message from user
var messageText = Console.ReadLine();
if (string.IsNullOrEmpty(messageText) || messageText == "exit")
{
break;
} //Create a DotNetMQ Message to send to Application2
var message = mdsClient.CreateMessage();
//Set destination application name
message.DestinationApplicationName = "Application2";
//message.DestinationServerName = "this_server2";
//Set message data
message.MessageData = Encoding.UTF8.GetBytes(messageText); //Send message
message.Send();
} //Disconnect from DotNetMQ server
mdsClient.Disconnect();
}
}
}
using System;
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("Press enter to exit...");
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("Text message received : " + messageText);
Console.WriteLine("Source application : " + e.Message.SourceApplicationName); //Acknowledge that message is properly handled and processed. So, it will be deleted from queue.
e.Message.Acknowledge();
}
}
}

DotNetMQ的一个小demo的更多相关文章

  1. 模仿京东顶部搜索条效果制作的一个小demo

    最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...

  2. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  3. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  4. 一周一个小demo — 前端后台的交互实例

    这一周呢,本K在大神的指导下,完成了一个利用ajax与php文件上传处理相结合的一个留言板功能的小实例,下面就让本K来带大家瞅瞅如何实现这一种功能. 一.界面概览 首先我们来看一下这个小demo的具体 ...

  5. 从一个小demo开始,体验“API经济”的大魅力

    写在前面 “API经济”这个词是越来越火了,但是"API经济"具体指的是什么,相信很多人还没有个明确的认识.不过今天我可不打算长篇大论的去讲解一些概念,我们就以“电话号码归属地查询 ...

  6. 学习react,动手实现一个小demo(仿知乎问答)

    学习react也有一周的时间,最近自己做了个仿知乎问答的小demo,项目源码在github上:https://github.com/yang302/reactQa 使用技术:bower+gulp+re ...

  7. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  8. drools 的一个小demo

    直接上代码: 第一步,maven引入相关包 <?xml version="1.0" encoding="UTF-8"?> <project x ...

  9. python爬虫学习(8) —— 关于4399的一个小Demo

    堂弟喜欢各种游戏,在没有网络的情况下,上4399显得很无力. 另外,4399广告好多,,而且加载慢.. 怎么办,,写个爬虫吧,,把4399上的"好玩"游戏爬下来. 1. 分析阶段 ...

随机推荐

  1. 第五章 springboot + mybatis

    springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成.集成方式相当简单. 1.项目结构 2.pom.xml <!-- 与数 ...

  2. fail2ban 原理 安装 使用

    cd fail2ban python setup.py install /etc/fail2ban/ 为配置文件目录; /usr/lib/pythonx.x/site-packages/fail2ba ...

  3. quick-cocos2d-x之testlua之mainMenu.lua

    require "helper" require "testResource" require "ActionsTest.ActionsTest&qu ...

  4. SDAutoLayout:比masonry更简单易用的自动布局库

    SDAutoLayout:一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于做最简单易用的AutoLayout库. [SDAutoLa ...

  5. [VBS]脚本中的字典、动态数组、队列和堆栈

    今天用VBS脚本写了几个程序,用到了字典(Dictionary).动态数组(ArrayList).队列(Queue)和堆栈(Stack).现在写篇Blog总结一下 :-) 1.编写环境 今天突发奇想下 ...

  6. 有关big.LITTLE,你需要知道的十件事情

    来源 问题 1:该技术能够同时打开所有核心吗?   在早期的 big.LITTLE 软件模型中(集群迁移和 CPU 迁移),软件在核心之间切换,不能同时打开所有核心.在更新的软件模型“全局任务调度”中 ...

  7. Android性能优化方法(五)

    有时候,我们的页面中可能会包含一些布局,这些布局默认是隐藏的,当用户触发了一定的操作之后,隐藏的布局才会显示出来.比如,我们有一个Activity用来显示好友的列表,当用户点击Menu中的“导入”以后 ...

  8. 1.4 Service

    用于在后台完成用户指定的操作,为其他组件提供后台服务或监控其他组件的运行状态. 开发人员需要在应用程序配置文件中声明全部的service,使用<service></service&g ...

  9. NoSQL精粹(NoSQL Distilled)——序言

    之前说到博客长草的问题,想了想除了很忙特别忙非常忙各种瞎忙忙你妹啊外,主要还是不知道写什么好--到这家公司的两年中从JS到领域驱动到缓存服务器从前端到后端各种折腾,有些东西虽然有所心得,不过既然前人已 ...

  10. PropertyChangedCallback 只触发了一次?

    在自定义的用户控件中,添加一个依赖属性,如下: public static readonly DependencyProperty ItemsSourceProperty = DependencyPr ...