首页 > 编程语言 >MassTransit - .NET Core 的分布式应用程序框架

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

时间:2022-11-24 17:45:27浏览次数:41  
标签:Core GettingStarted 分布式应用 Microsoft MassTransit using new public

简介

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

标签:Core,GettingStarted,分布式应用,Microsoft,MassTransit,using,new,public
From: https://www.cnblogs.com/yakniu/p/16922651.html

相关文章

  • EFCore DBFirst从数据库生成实体类
    目录EFCoreDBFirst从数据库生成实体类官网安装指定NuGet包生成实体类EFCoreDBFirst从数据库生成实体类本示例仅适用于mysql版本,其他版本请根据官网说明进行操作。官网......
  • .NET Core读写InfluxDB时序数据库的方法教程
    前言在我们很多应用中会遇到有一种基于一系列时间的数据需要处理,通过时间的顺序可以将这些数据点连成线,再通过数据统计后可以做成多纬度的报表,也可通过机器学习来实现数据......
  • ASP .NET Core 缓存
    缓存可以通过减少生成内容所需的工作,显著提高应用的性能和可伸缩性。缓存最适用于不常更改且生成成本很高的数据。缓存生成的数据副本可以比从源中更快地返回。应该以从......
  • EFCore-实体关系配置
    EFCore-实体关系配置EFCore中实体之间关系的配置的套路:HasXXX(…).WithXXX(…);有XXX、反之带有XXX。XXX可选值One、Many。一对多:HasOne(…).WithMany(…);一对一:H......
  • EF Core迁移失败 ,It was not possible to find any compatible framework version
    前言:其实我很早之前就知道可以这样做,但是现在遇到这个错误,我忘记了答案。所以还是记录下来吧。。。。。参考链接:https://learn.microsoft.com/en-us/answers/questio......
  • 篇(20)-Asp.Net Core入门实战-完结之一期阶段总结
    入门实战-完结之一期阶段总结用了几天的功夫,编写和演练的这个Asp.NetCore简单入门的教程已经讲完,下一期可以将完善其功能,将UI功能也给其套上,至少可以达到商用的目的。简......
  • .net core health check _ practics
    ASP.NETCoreHealthChecks(net-hacker.rocks)  ASP.NETCoreHealthChecksJürgenGutsch-20August,2020SinceawhileIplannedtowriteabouttheASP.......
  • .net core & kubernetes _ health check
    AddinghealthcheckswithLiveness,Readiness,andStartupprobes(andrewlock.net)  Thisisthesixthpostintheseries: DeployingASP.NETCoreapplicat......
  • .NET CORE health check
    原文:HealthchecksinASP.NETCore|MicrosoftLearn varbuilder=WebApplication.CreateBuilder(args);builder.Services.AddHealthChecks();varapp=buil......
  • Opencore 常见kext驱动详解
    常用驱动AirportBrcmFixup:用于修复不能免驱的博通无线网卡AlpsT4USB:是VoodooI2C的插件,为AlpsT4USB触控板提供原生苹果手势支持AppleALC:用于驱动ALC芯片声卡,和Voodo......