轻型服务巴士:MassTransit
轻型服务巴士:MassTransit
南非朋友,
https://www.maketecheasier.com/lightweight-browsers-for-windows/
又是今天 在微服务项目中 我使用的工具 轨道交通 我们会谈到。它是一个开源库,当我写这篇文章时,它的第 8 版已经发布。它在.Net 世界中非常流行。他虽然多才多艺,但今天我们要讨论的是“服务巴士”部分,这是它最基本的特点。虽然有多种方法可以做到这一点,但 MassTransit 让我们很容易做到这一点。如果我们准备好了,让我们开始吧。
尽管 MassTransit 将自己描述为“轻量级服务总线”,但它实际上是一个非常强大的工具。当我第一次使用它时,它有 4 种不同的集成。现在,当我阅读这篇文章时,我看到他们添加了 2 个新的集成。这些集成如下。
- 在记忆中
- 兔MQ
- Azure 服务总线
- 亚马逊 SQS
- gRPC
- ActiveMQ
如你所知 兔MQ 它是一个开源消息队列系统(消息代理),被业界公认为基石,并被许多软件开发人员使用。由于我们的主题不是 RabbitMQ,所以我们在这里提出一个观点并继续前进。
MassTransit 还支持许多功能,例如错误处理、事务(saga)、重试模式、调度、健康检查、断路器,使它们非常易于使用。我们在项目中使用了许多这些功能,也许我们将有机会在其他文章中介绍它们。
在本文中,我们将向您展示我们如何在我们的微服务项目中处理这个问题。我们将首先关注发送消息的部分(发送/发布 - 指南),然后使用它(消费者 - 报告)。现在让我们考虑“指南”服务中的设置。
公共无效配置服务(IServiceCollection 服务)
{
services.AddMassTransit(x =>
{
//其他设置
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.host("host", h => //我们可以从配置文件中获取。
{
h.Username("用户名");
h.Password("密码");
});
));
});
}
您需要从 NuGet 下载“MassTransit.RabbitMQ”包。由于 RabbitMQ 包依赖于 MassTransit 包,我们只需要下载即可。
安装包 MassTransit.RabbitMQ -版本 8.0.6
我们已经完成了设置,现在是时候使用它了。
公共类 GuideController : ControllerBase
{
私有只读 IBus _bus;
// MassTransit 为您执行 DI。
公共 GuideController(IBus 总线)
{
_bus = 总线;
}
公共异步任务操作()
{
// 你可以在这里写你的其他代码
等待 _bus.Publish(YourModel);
}
}
我们在这里谈论的模型;它可以是dto、类、接口或记录。 MassTransit 推荐记录为“最佳实践”。这也是有原因的,我建议你看看这个线程。为了避免混淆,我不在这里讨论它。
现在让我们来到消费这个传入事件(consume)的报表服务。我们再次进行设置。
公共无效配置服务(IServiceCollection 服务)
{
services.AddMassTransit(x =>
{
x.AddConsumer<YourConsumer> ();
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("主机", h =>
{
h.Username("用户名");
h.Password("密码");
});
cfg.ReceiveEndpoint("guide-service", ep =>
{
ep.ConfigureConsumer<YourConsumer> (提供者);
});
});
});
}
我们已经完成了我们的设置,现在让我们编写我们的类来捕捉这个过程。
公共类YourConsumer:IConsumer<YourModel> //使用这个接口是强制的。
{
公共异步任务消耗(ConsumeContext<YourModel>语境)
{
var reportId = context.Message.ReportId;
等待 Console.Out.WriteLineAsync
($"报告操作成功!报告ID:{reportId}。");
//我们可以在之前或之后编写您的其他代码。
}
}
我们可以通过 NuGet 为该服务下载相同的包来准备项目。
让我们以关于拖延症的圣训结束这篇文章。
“不要做一个自吹自擂的人;不要做交易员,除了买卖美好的事物。当然,他们是拖延行动的人。 ”
(Musnad,1/129;见 Mecmau'z-Zevaid,5/172)。
最初发表于 https://malikmasis.blogspot.com .
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明