简介

MassTransit 是一个免费的、开源的.NET 分布式应用程序框架。MassTransit 使创建应用程序和服务变得容易,这些应用程序和服务利用基于消息的松散耦合异步通信来实现更高的可用性、可靠性和可扩展性

特点

•易于使用和理解的 API,让您专注于解决业务问题•使用 RabbitMQ、Azure 服务总线、ActiveMQ 和 Amazon SQS/SNS 部署您的解决方案,无需重写•强大的消息模式•端到端解决方案•内存测试工具,用于创建具有全面集成测试级别验证的快速单元测试•对分布式跟踪以及监控

使用

安装 MassTransit 模板

MassTransit 包括项目和项目模板,简化了新项目的创建。dotnet new -i MassTransit.Templates通过在控制台执行来安装模板。

dotnet new -i MassTransit.Templates

初始项目创建

要使用 MassTransit 创建服务,请通过命令提示符创建Worker

$ dotnet new mtworker -n GettingStarted
$ cd GettingStarted
$ dotnet new mtconsumer

代码概述

打开项目时,您会看到有 3 个类文件。Program.cs是标准入口点,在这里我们配置主机生成器。Consumers/GettingStartedConsumer.cs是运输消费者 Contracts/GettingStarted.cs是一个示例消息

添加后台服务

namespace GettingStarted;using System;
using System.Threading;
using System.Threading.Tasks;
using Contracts;
using MassTransit;
using Microsoft.Extensions.Hosting;public class Worker : BackgroundService
{readonly IBus _bus;public Worker(IBus bus){_bus = bus;}protected override async Task ExecuteAsync(CancellationToken stoppingToken){while (!stoppingToken.IsCancellationRequested){await _bus.Publish(new GettingStarted { Value = $"The time is {DateTimeOffset.Now}" }, stoppingToken);await Task.Delay(1000, stoppingToken);}}
}

注册Work

在方法Program.cs的底部ConfigureServices添加

services.AddHostedService<Worker>();

更新消费者

在您的Consumers文件夹中,GettingStartedConsumer使用如下所示的日志记录语句进行编辑。

namespace GettingStarted.Consumers;using System.Threading.Tasks;
using Contracts;
using MassTransit;
using Microsoft.Extensions.Logging;public class GettingStartedConsumer :IConsumer<GettingStarted>
{readonly ILogger<GettingStartedConsumer> _logger;public GettingStartedConsumer(ILogger<GettingStartedConsumer> logger){_logger = logger;}public Task Consume(ConsumeContext<GettingStarted> context){_logger.LogInformation("Received Text: {Text}", context.Message.Value);return Task.CompletedTask;}
}

###运行项目 输出应该已更改以显示生成输出的消息使用者(再次按 Control+C 退出)。

Building...
info: MassTransit[0]Configured endpoint Message, Consumer: GettingStarted.MessageConsumer
info: MassTransit[0]Bus started: loopback://localhost/
info: Microsoft.Hosting.Lifetime[0]Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]Content root path: /Users/chris/Garbage/start/GettingStarted
info: GettingStarted.MessageConsumer[0]Received Text: The time is 3/24/2021 12:02:01 PM -05:00
info: GettingStarted.MessageConsumer[0]Received Text: The time is 3/24/2021 12:02:02 PM -05:00

Github地址

https://github.com/MassTransit/MassTransit

最后大家如果喜欢我的文章,还麻烦给个关注并点个赞, 希望net生态圈越来越好!

MassTransit - .NET Core 的分布式应用程序框架相关推荐

  1. .NET Core 3.0 的新改进:针对分布式应用程序的故障诊断和监控

    由于分布式应用是由多个组件组成的,且这些组件往往是由不同的团队拥有和操作,所以在与应用程序发生交互时,就会需要跨多个组件执行代码的分布式跟踪.如果用户遇到了问题,想要确定是哪个组件出现了差错,基本就是 ...

  2. Foundatio - .Net Core用于构建分布式应用程序的可插拔基础块

    简介 Foundatio - 用于构建分布式应用程序的可插拔基础块 •想要针对抽象接口进行构建,以便我们可以轻松更改实现.希望这些块对依赖注入友好.•缓存:我们最初使用的是开源 Redis 缓存客户端 ...

  3. play 框架_用于Play框架分布式应用程序的Init.d Shell脚本

    play 框架 我编写了一个Shell脚本来控制使用内置命令dist打包的Play框架应用程序. 以这种方式打包的应用程序是独立的压缩发行版,而无需在应该运行的计算机上安装Play框架. 所需的一切都 ...

  4. 用于Play框架分布式应用程序的Init.d Shell脚本

    我编写了一个Shell脚本来控制使用内置命令dist打包的Play框架应用程序. 以这种方式打包的应用程序是压缩的独立发行版,不需要在应该运行其的计算机上安装Play框架. 所需的一切都在包装内. 在 ...

  5. dommel mysql_.Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  6. ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释

    ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释 原文:ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释 IdentityS ...

  7. ASP.NET Core开发-使用Nancy框架

    Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...

  8. .NET CORE编写控制台程序应有的优雅姿势(转载)

    原文地址:https://www.cnblogs.com/zuowj/p/11107243.html 本文所说的编写控制台程序应有的"正确"方法,我把正确二字加上引号,因为没有绝对 ...

  9. axure 小程序 lib_详细揭秘微信小程序框架技术——Mpx

    与目前业内的几个小程序框架相比较而言,mpx 开发设计的出发点就是基于原生的小程序去做功能增强.所以从开发框架的角度来说,是没有任何"包袱",围绕着原生小程序这个 core 去做不 ...

最新文章

  1. linux去重文件第一列,科学网—Linux实用命令 - 刘洪波的博文
  2. cesium 设置时间_Cesium应用篇:3控件(1)Clock
  3. 工作总结13:vue官网封装组件
  4. Microsoft.CSharp.dll程序集的作用
  5. 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
  6. 解决虚拟机中kylin连不上网络的问题
  7. 个人第三次软件工程作业-效能分析
  8. 机器学习与神经网络绪论
  9. 软考(22)-网络存储、网络安全、网络规划与设计
  10. linux7.6安装gcc,Centos7.6 安装gcc9
  11. 两个3G模块相互通信
  12. 实现小程序微信支付功能
  13. antd menu 样式修改
  14. 微信公众号图文如何添加PDF附件
  15. 我会安静的忘记你:伤感爱情空间日志
  16. 十二条最经典摄影技巧
  17. AspNet Core 2.2 SendGrid邮件发送(可群发)
  18. lol美服服务器修改密码,如何修改LOL美服密码?英雄联盟美服账号密码和邮箱修改教程...
  19. win10下启动.bat文件闪退问题
  20. VSCode中配置Rust时报错:error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1

热门文章

  1. 将 iOS 应用的体积控制在 20MB 以内对于其下载量有很明显的影响吗?
  2. matlab的边缘检测方法,常用图像边缘检测方法及Matlab研究
  3. r-studio扫描后各种颜色_iPhone手机备忘录,原来还隐藏着扫描仪,你不会还不知道吧?...
  4. 网络虚拟化有几种实现方式_停车场管理系统的防砸车功能有几种方式?如何实现?...
  5. Reptile:requests + Xpath 爬取段子网的段子
  6. python拓展7(Celery消息队列配置定时任务)
  7. css定位positon
  8. 分析windows宿主机Ping不通linux虚拟机的其中一种情况
  9. 看着手机会让您晕眩吗? 禁用动画
  10. 视频造假_如何发现“深造假”面部切换视频