MassTransit入门
.NET平台ESB框架的中文资料少的可怜,NServiceBus的有几篇,MassTransit的根本找不到,只好硬着头皮看官方的英文文档,顺便翻译出来加深理解。
欢迎拍砖。
MassTransit是一个.net平台的企业服务总线,使用消息队列(MSMQ,)进行通讯。
安装
1 使用NuGet安装
nuget Install-Package MassTransit
但是要注意:使用NuGet安装的只有dll,不包含MassTransit.RuntimeServices可执行程序和数据库创建脚本。
RuntimeServices通过Subscription Service把消息分发给多个订阅者。
如果你打算使用 UseSubscriptionService,那么就需要自己编译源代码。
2 编译源代码
仓库地址 https://github.com/MassTransit/MassTransit
如果你不想要用vs编译 而是要运行build.bat那么需要下列工具:
- .Net 4.0 sdk
- ruby v 1.8.7
- gems (rake, albacore)
配置
shut up ,just show the code !
public class YourMessage { public string Text { get; set; } }
public class Program
{
public static void Main()
{
Bus.Initialize(sbc =>
{
sbc.UseMsmq(msmq =>
{
msmq.VerifyMsmqConfiguration();
msmq.UseMulticastSubscriptionClient();
//msmq.UseSubscriptionService("123.123.12.12");
});
sbc.ReceiveFrom("msmq://localhost/test_queue");
sbc.Subscribe(subs=>
{
subs.Handler<YourMessage>(msg=>Console.WriteLine(msg.Text));
});
});
Bus.Instance.Publish(new YourMessage{Text = "Hi"});
}
}
这些代码干了些啥事儿呢?
如果我们创建消息系统,首先需要创建消息。上面的代码,我们创建了一个普通的c#类:YourMessage,这就是一个消息,是不是很简单?
上面的代码中,我们使用MassTransit的静态类Bus的静态方法Initialize进行初始化。首先我们告诉MassTransit我们使用MSMQ作为消息传输机(transport)sbc.UseMsmq(...),msmq.VerifyMsmqConfiguration()对MSMQ进行验证。
After that we have the msmq.UseMulticastSubscriptionClient() this tells the bus to pass subscription information around using PGM over MSMQ giving us a way to talk to all of the other bus instances on the network. This eliminates the need for a central control point.
然后sbc.ReceiveFrom("msmq://localhost/test_queue")告诉bus我们收件箱地址(这个地址永远使用本机外网ip,不带“private$”),bus收到消息后会自动分发给所有订阅了这个消息的消费者(consumers )。
最后配置了YourMessage的一个Handler并Publish了一个消息。
如果你觉得Singleton有问题,那可以用下面的代码
var bus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq(msmq => msmq.UseMulticastSubscriptionClient());
sbc.ReceiveFrom("msmq://localhost/test_queue");
});
总结:
1,msmq的地址格式:"msmq://42.131.31.22/" + queueName 不带private$
2,如果队列是手工创建的话,需要设置权限。
3,UseSubscriptionService(xxx)如果xxx是远程地址,那么ReceiveFrom(yyy)yyy是本机的外网ip,否则xxx发送不出去响应信息
MassTransit入门的更多相关文章
- MassTransit 入门(一)
本文地址源码 MassTransit是一个面向.net的免费开源分布式应用程序框架. MassTransit使得创建应用程序和服务变得很容易,这些应用程序和服务利用基于消息的.松散耦合的异步通信来获得 ...
- MassTransit RabbitMQ 参考文档
Autofac http://docs.autofac.org/en/latest/lifetime/startup.html RabbitMQ http://www.rabbitmq.com/dot ...
- 译MassTransit 快速入门
给我看代码! 下面是MassTransit的功能设置. public class YourMessage { public string Text { get; set; } } public cla ...
- MassTransit 实现发布/订阅
MassTransit 介绍 先看下masstransit 官网介绍:MassTransit 是一个自由.开源.轻量级的消息总线, 用于使用. NET 框架创建分布式应用程序.MassTransit ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
随机推荐
- crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo
最近做一个可执行shell调度的需求,要求用户输入shell,然后后台定时调度运行.实现大致为:保存用户的输入,设定时间,crontab定时执行用户的输入.但这里涉及到一个安全问题,如何确定用户的输入 ...
- 视觉SLAM中的数学基础 第三篇 李群与李代数
视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换 ...
- Uploadify导致Chrome频繁崩溃Crash
上传功能是工作中经常会遇到的问题,应该作为开发标配的技能每个人都会. 我选用的是Uploadify 3.1.2进行上传,使用方法参考之前的一篇文章, 今天记录下一个我遇到的很神奇的bug chrome ...
- Sort_Buffer_Size 设置对服务器性能的影响
基础知识: 1. Sort_Buffer_Size 是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存.2. Sort_Buffer ...
- [Aaronyang] 写给自己的WPF4.5 笔记16[多线程]
=============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ======= ...
- CentOS 7 安装配置zabbix 3.2.8
运行环境:CentOS 7.2 LNMP(已提前安装好此环境) 1.首先导入zabbix安装源# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x ...
- 【emWin】例程十四:xbf外置字体
介绍: 本例将xbf格式文件放到SD卡中,通过读取SD卡中的字库文件在液晶上显示文字. 实验指导书及代码包下载: 链接:http://pan.baidu.com/s/1mhTdYeG 密码:aka ...
- WARNING: Can not get binary dependencies for file...
环境: window7 64bit python 3.5 pyinstaller 3.2 用pyinstaller 将python文件打包成exe文件的过程中,出现了如下的错误 C:\Users\ca ...
- 解决SQLite异常:library routine called out of sequence
在项目开发中,使用SQLite一不小心就会碰到各种DB异常,网上搜了下没有这方面的资料,写出来记录下. 异常信息:android.database.sqlite.SQLiteMisuseExcepti ...
- c#.net基础
值类型:值类型的实例一般在线程的栈上分配 引用类型:引用类型的实例在线程的托管堆上分配 引用类型变量的Equals比较的是二者的引用地址而不是内部的值,值类型变量的Equals方法比较的是二者的值. ...