MassTransit - 发送消息后未调用 Consume 方法

MassTransit - Consume method not called after message is sent

MyApp.Application

public class CreatePersonHandler : IConsumer<CreatePerson>
    {
        private readonly IUnitOfWork _unitOfWork;
        private readonly IMapper _mapper;

        public CreatePersonHandler(IUnitOfWork _unitOfWork, IMapper mapper)
        {
            _unitOfWork = unitOfWork;
            _mapper = mapper;
        }

        public Task Consume(ConsumeContext<CreatePerson> context)
        {
            ...
            Person person = _mapper.Map<Person>(context.Message);
            _unitOfWork.Persons.Add(person);
        }
    }

MyApp.API Startup.cs ...

public void ConfigureServices(IServiceCollection services)
{
   services.AddAutoMapper(Assembly.GetAssembly(typeof(Startup)));
   services.AddScoped<IUnitOfWork, UnitOfWork >();
   services.AddMassTransit(x =>
   {
       x.SetKebabCaseEndpointNameFormatter();
       x.AddConsumer<CreatePersonHandler>();    

       x.UsingRabbitMq((context, cfg) =>
       {
           cfg.ReceiveEndpoint("persons", e =>
           {
               e.ConfigureConsumer<CreatePersonHandler>(context);
           });
       });
    });

    services.AddMassTransitHostedService();
}

我正在使用 IBus 从控制器发送消息

 _bus.Send(new CreatePerson{ FirstName = "Bob "});

但我执行了处理程序,但无法点击 CreatePersonH​​andler 中的 Consume 方法 class。

我哪里做错了?

日志很棒,它们会告诉您 Send 正在抛出异常。由于您没有 destinationAddress,因此无法 Send 上车。

我建议改用 Publish,以便代理可以为您将消息路由到消费者。

另外,查看日志。始终从日志开始。