如果托管在IIS上,则ASP.NET Core应用程序不使用RabbitMQ队列中的消息

问题描述

设置

使用IIS上的masstransit lib的asp.net核心应用程序localhost上的RabbitMQ,它消耗事件。

问题

RabbitMQ队列中有消息,当我的asp.net核心应用程序托管在IIS上时,它也不会使用它,而且,在RabbitMQ Management的队列详细信息中,它不视为使用者。但是,它消耗消息,并且当我“ 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;
    }
}

提前感谢所有回复

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)