首页 > 解决方案 > 如果托管在 IIS 上,ASP.NET 核心应用程序不会使用来自 RabbitMQ 队列的消息

问题描述

设置

本地主机上的 RabbitMQ,asp.net 核心应用程序使用 IIS 上的 masstransit lib 消耗事件。

问题

RabbitMQ 队列中有消息,当我的 asp.net 核心应用程序托管在 IIS 上时,它不会使用它,而且,它在 RabbitMQ 管理的队列详细信息中作为消费者不可见。但是,当我“dotnet 运行”它或在 IIS Express 上运行它时,它会消耗消息并且作为消费者可见。

代码

Startup.cs 片段

...
services.AddMassTransit(x =>
{
    x.AddConsumer<EventConsumer>();

    x.UsingRabbitMq((context, cfg) =>
    {
        cfg.Host("localhost", c =>
        {
            c.Username("username");
            c.Password("password");
        });
        cfg.ReceiveEndpoint("queue-name", e =>
        {
            e.ConfigureConsumer<EventConsumer>(context);
        });
    });
});

services.AddMassTransitHostedService();
...

EventConsumer.cs

public class EventConsumer : IConsumer<Event>
{
    private readonly ILogger<EventConsumer> _logger;
    
    public EventConsumer(ILogger<EventConsumer> logger)
    {
        _logger = logger;
    }

    public async Task Consume(ConsumeContext<Event> context)
    {
        var message = context.Message;
    }
}

提前感谢所有回复。

标签: c#asp.net-corerabbitmqmasstransit

解决方案


推荐阅读