找不到 AddMasstransitHostedService

Chr*_*ova 6 c# masstransit asp.net-core

美好的一天,我正在为 .net6 网络核心应用程序配置 Masstransit 已添加 Masstransit nuget 包:

<PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="7.2.4" />
<PackageReference Include="MassTransit.RabbitMQ" Version="7.2.4" />
Run Code Online (Sandbox Code Playgroud)

我在 Startup 中注册它,它说没有像 AddMasstransitHostedService 这样的方法,我尝试在没有它的情况下发布消息,但没有创建交换(并且由于某种原因调试还显示端口 0 的实际地址)

非常感谢您的帮助已在互联网上搜索了所有相关内容,不幸的是尚未修复

这是我注册大众交通的方式:

services.AddMassTransit(mt =>
{
    mt.UsingRabbitMq((context, cfg) =>
    {
        cfg.Host(new Uri(RabbitMqOptions.RabbitMqUri), h =>
        {
            h.Username(RabbitMqOptions.UserName);
            h.Password(RabbitMqOptions.Password);
        });
        
        cfg.AutoStart = true;

        cfg.Publish<IServerNotificationMessage>(e => e.ExchangeType = RabbitMQ.Client.ExchangeType.Direct);
    });
});
services.AddMassTransitHostedService();//<-----this one hints: IServiceCollection doesnt contain a definition for AddMassTransitHostedService...
Run Code Online (Sandbox Code Playgroud)

这是我尝试发布消息的方式:

public class SomeController : ControllerBase
{
    protected readonly IBus _bus;

    public SomeController(IBus bus)
    {
        _bus = bus;
    }

    [HttpGet("TestPublish")]
    public void TestPublish(CancellationToken cancellationToken)
    {
        _bus.Publish<SomeMessage>(new
        {
            ...
            ... // fields go here
        }, cancellationToken);
Run Code Online (Sandbox Code Playgroud)

Chr*_*son 17

您需要添加MassTransit.AspNetCore包参考。

请注意,对于 MassTransit V8 或更高版本,不再需要且不应引用此包。