You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:45:06