.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的一个HandlerPublish了一个消息。

如果你觉得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入门的更多相关文章

  1. MassTransit 入门(一)

    本文地址源码 MassTransit是一个面向.net的免费开源分布式应用程序框架. MassTransit使得创建应用程序和服务变得很容易,这些应用程序和服务利用基于消息的.松散耦合的异步通信来获得 ...

  2. MassTransit RabbitMQ 参考文档

    Autofac http://docs.autofac.org/en/latest/lifetime/startup.html RabbitMQ http://www.rabbitmq.com/dot ...

  3. 译MassTransit 快速入门

    给我看代码! 下面是MassTransit的功能设置. public class YourMessage { public string Text { get; set; } } public cla ...

  4. MassTransit 实现发布/订阅

    MassTransit 介绍  先看下masstransit 官网介绍:MassTransit 是一个自由.开源.轻量级的消息总线, 用于使用. NET 框架创建分布式应用程序.MassTransit ...

  5. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  6. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  7. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  8. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  9. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

随机推荐

  1. WebMagic编译时提示Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.18的解决方法

    问题描述:    从http://git.oschina.net/flashsword20/webmagic 下载最新代码,按照http://webmagic.io/docs/zh/posts/ch3 ...

  2. DHCP服务原理与搭建(Linux系统+路由器,二选一方案)

    大家都知道上网的最基本前提是要在终端上设置IP.子网掩码.网关.DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP.掩码.DNS地址也能上网,这是什么原因呢?其实 ...

  3. how to use boost program options

    From:  http://www.radmangames.com/programming/how-to-use-boost-program_options If it so happens that ...

  4. WPF应用程序exe接收参数

    using System;using System.ServiceProcess; namespace GoShopService{    public partial class Service1 ...

  5. 解剖SQLSERVER 第一篇 数据库恢复软件商的黑幕(有删减版)

    解剖SQLSERVER 第一篇  数据库恢复软件商的黑幕(有删减版) 这一系列,我们一起来解剖SQLSERVER 在系列的第一篇文章里本人可能会得罪某些人,但是作为一位SQLSERVER MVP,在我 ...

  6. java中常用jar包

    commons-io.jar:可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤 ...

  7. fiddler抓包参数乱码的解决方法

    解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 4.右键新建,选字符串 ...

  8. SessionFactory 执行原生态的SQL语句

    public List<User> getPageIndex(int pageIndex,int topNum){ String hql = "select top(" ...

  9. golang----GC的实现原理

    Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短.停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务 ...

  10. 转移 Visual Studio 2017 的安装临时文件

    每次更新 Visual Studio 2017 会在 C 盘留下大量的缓存文件,因为目录比较深,怕以后忘了,用目录链接的形式转移到其它磁盘,也好方便清理: mklink /D C:\ProgramDa ...