.NET6项目配置MassTransit时找不到AddMassTransitHostedService方法求助
MassTransit配置问题解决方案
1. 解决AddMassTransitHostedService方法找不到的问题
首先确认Startup类顶部已引入对应命名空间:
using MassTransit.Extensions.DependencyInjection;
如果引入命名空间后仍然提示不存在该方法,可直接手动注册托管服务,效果完全等价:
services.AddHostedService<MassTransitHostedService>();
2. 解决RabbitMQ端口显示为0、未创建Exchange的问题
这两个问题的根因一致:你没有启动MassTransit的后台托管服务,IBus实例未完成RabbitMQ连接初始化,调用发布方法时使用的是未激活的Bus实例,不会发起RabbitMQ请求,自然不会创建Exchange,端口也会默认显示为0。按第一步的方案注册托管服务后即可解决该问题。
3. 额外配置修正
- 你当前仅配置了
IServerNotificationMessage类型的发布规则,如果需要SomeMessage类型也使用Direct类型的Exchange,需要补充对应配置:
cfg.Publish<SomeMessage>(e => e.ExchangeType = RabbitMQ.Client.ExchangeType.Direct);
Publish为异步方法,你当前在同步Action中直接调用会出现异步任务丢失的问题,建议调整为异步写法:
[HttpGet("TestPublish")] public async Task TestPublish(CancellationToken cancellationToken) { await _bus.Publish<SomeMessage>(new { // 此处为字段定义 }, cancellationToken); }
内容的提问来源于stack exchange,提问作者Christy Pirumova
相关产品推荐
相关产品推荐

