MassTransit - .NET Core 的分布式应用程序框架

简介

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

6e1ef416f3367f477b991c90b241ce5e.png

Github地址

https://github.com/MassTransit/MassTransit

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CoffeeScript 1.9发布,引入对生成器的支持

CoffeeScript 1.9最终引入了期待已久的生成器&#xff08;generator&#xff09;&#xff0c;这将会防止开发人员陷入回调函数的陷阱&#xff0c;并帮助他们编写异步代码。\简单说&#xff0c;生成器是这样一类函数&#xff0c;你可以中途从中退出&#xff0c;后面再进来&#…

新型互联网交换中心促进互联网产业发展,助力信息经济创新

互联网作为由众多网络互联构成的“网中网”&#xff0c;网络间联通是互联网运行的重要环节之一。互联网发展之初&#xff0c;我国网络主要由几大基础电信运营商承建&#xff08;包括中国电信、中国移动、中国联通、中国铁通等&#xff09;&#xff0c;互联网用户、ICP&#xff…

mongo学习笔记(二):聚合,游标

一、聚合 <1> Count 1.db.person.count() 2.db.person.count({"age":20}) <2> Distinct db.person.distinct("age")//指定了谁&#xff0c;谁就不能重复 <3> Group key&#xff1a;这个就是分组的key&#xff0c;我们这里是对年龄分组。…

【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值

一年中的12个月份的月最大合成&#xff08;mvc&#xff09;数据放在“F:\\Vegetation Change\\Data\\GIMMS Data\\1MVC\\"&#xff0c;数据名称格式为mvc_198801,mvc_198802........mvc_198812。处理年份为1981-2006&#xff0c;代码为&#xff1a; import arcpy arcpy.C…

linux终端常用命令和windows终端常用命令对比

1、打开终端的快捷键 在linux平台 ctrl + Alt + T 在windows平台 菜单键+R 然后cmd 回车 2、过滤的命令linux的grep,windows的findstr 比如我们过滤android日志 在linux平台终端命令如下 adb logcat | grep *** 在windows平台终端命令如下 adb logcat | findstr *** 3、…

字节跳动offer流程多长时间_字节跳动-运营实习生-面经实录(已Offer??)

一、岗位【职位】运营实习生&#xff08;社群、用研&#xff09;【类型】日常实习【地点】上海【JD】-职位描述-参与公司教育类APP的核心用户运营工作&#xff1b;通过社群及内容的形式服务好核心用户群体&#xff0c;提高用户口碑&#xff1b;建立用户反馈体系&#xff0c;评估…

Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏

JAVA--第2周实验--猜数字游戏/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reserved.* 文件名称&#xff1a;猜数字游戏* 作 者&#xff1a; 雷恒鑫* 完成日期&#xff1a; 2012 年 09 月 07 日* 版 本 号&#…

Xamarin效果第十五篇之自定义CheckBox

在上一篇中使用Xamarin玩耍了GIS加载高德和百度;这不这两天又抽空完善了一下;自定义了一下CheckBox;来看看最终效果:关于实现咱就是直接自定义ContentView:后台无非就是一堆的依赖属性(和WPF真像):后台定义的Command为了支持选中状态:‍再来看看具体使用:<CustomViews:Image…

使用ndk standalone工具链来编译某个平台下的库

地址&#xff1a; http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolchain provided with the Android NDK as a standalone compiler. This can be useful if you already have your own build system, and only need to abili…

顺义教委携手华平共建视频图像综合管理平台

随着经济的发展和社会的进步&#xff0c;北京顺义区的教育也迈上了新的台阶。据初步统计&#xff0c;目前全区有中小学、幼儿园、中等职业学校115所&#xff0c;大学8所&#xff0c;培训机构86个&#xff0c;在校生近10万人&#xff0c;教职工13000余人。多年教育信息化的推进&…

【Java基础】Java中的持久属性集Properties

Properties 类的介绍 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一个属性列表可包含另一个属性列表作为它的“默认值”&#xff1b;如果未能在原有的属性列表中搜索到属性键&#xff0c;则搜索第…

【ArcGIS遇上Python】栅格影像批量除以10000

影像做除法时&#xff0c;要先进行float()运算&#xff0c;在进行Divide运算。以下将指定文件夹下的.tif文件首先转换为float并保存在指定文件&#xff0c;再进行divide运算。 import arcpy,os,glob arcpy.CheckOutExtension("spatial") datafilesglob.glob("F:…

python之sys.argv获取命令行的参数

1、问题 执行python文件&#xff0c;我们怎么获取在终端获取输入参数&#xff0c;我们可以使用sys.argv&#xff0c;特么之前不是不熟悉 2、代码 #!/usr/bin/pythonimport sysif __name__ __main__:first sys.argv[0:]print firstsecond sys.argv[1:]print secondname sy…

java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath

xpath全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索XPath 的选择功能十分强大&#xff0c;它提供了非常简洁的路径选择表达式&#xff0c;另外还提供了超过100个内置函数&#xff0c;用于字符串&#xff0…

ant压缩在哪卸载_反病毒软件这么多,到底哪一款适合你

记得大学读书的时候,买了电脑,第一件事情就是卸载windows自带的杀毒软件,然后装上自己心仪的杀毒软件,可是市面上杀毒软件这么多,哪一款适合你呢?我找了市面上排名最靠前的三款杀毒软件,让我们看看他们孰胜孰劣,还是各有千秋.他们分别是腾讯的电脑管家,金山毒霸,360安全卫士.这…

连接局域网的SQL Server数据库配置

首先要保证两台机器位于同一局域网内,然后打开配置工具→SQL Server配置管理器进行配置,将MSSQLSERVER的协议的TCP/IP的(IP1,IP2)TCP端口改为1433,已启用改为是。 服务器名称:输入IP 登录名:输入数据库帐号

.NetCore使用NETCore.MailKit发送邮件

前言平时工作中很少用到需要发邮件的功能&#xff0c;所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈&#xff0c;上边决定使用邮件&#xff0c;直接将反馈信息发送给领导&#xff0c;也就有了这篇文章。实现发邮件不难&#xff0c;但是开发中遇到了一个…

Erlang 进程创建性能测试

测试代码来自 Progremming Erlang。Erlang&#xff1a; R13B (erts-5.7.1)&#xff0c; 启动参数 P 5000000系统&#xff1a; Window XPCPU&#xff1a; E8200 2.66G 双核内存&#xff1a; 4GErlang R13B (erts-5.7.1) [smp:2:2] [rq:2] [async-threads:0]Eshell V5.7.1 (abor…

Linux bash shell基础语法

转自&#xff1a;http://blog.sina.com.cn/s/blog_46177c3401014fty.html一、Shell基本类型的变量&#xff1a;&#xff08;1&#xff09;Shell定义的环境变量&#xff1a;Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量&#xff0c;用户还可以重新定义这些变量…

通俗理解T检验与F检验的区别【转】

转自&#xff1a;http://blog.sina.com.cn/s/blog_4ee13c2c01016div.html1&#xff0c;T检验和F检验的由来一般而言&#xff0c;为了确定从样本(sample)统计结果推论至总体时所犯错的概率&#xff0c;我们会利用统计学家所开发的一些统计方法&#xff0c;进行统计检定。 通过把…