RabbitMQ C#基于消息的侦听器

RabbitMQ C#基于消息的侦听器,rabbitmq,Rabbitmq,我想打开webapplication,在后端打开一个新线程并启动一个侦听器。我想要的是,打开一次连接并启动rabbitmq侦听器,当新消息到来时,它在后台处理。 最好的方法是什么?为什么需要在web应用程序中侦听事件 相反,使用topshelf和masstransit作为rabbitmq客户端编写windows服务 您可以连接到rabbitmq并在Program.cs中注册侦听器使用者,如下所示: IBusControl busControl = Bus.Factory.CreateUsingR

我想打开webapplication,在后端打开一个新线程并启动一个侦听器。我想要的是,打开一次连接并启动rabbitmq侦听器,当新消息到来时,它在后台处理。
最好的方法是什么?

为什么需要在web应用程序中侦听事件

相反,使用topshelf和masstransit作为rabbitmq客户端编写windows服务

您可以连接到rabbitmq并在Program.cs中注册侦听器使用者,如下所示:

IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
        {
            IRabbitMqHost host = cfg.Host(new Uri(RabbitMQConstants.RabbitMQUri),
                hst =>
                {
                    hst.Username(RabbitMQConstants.RabbitMQUserName);
                    hst.Password(RabbitMQConstants.RabbitMQPassword);
                });

            cfg.ReceiveEndpoint(host,
                RabbitMQConstants.YourQueueName,
                endPointConfigurator => { endPointConfigurator.Consumer<SomeConsumer>(); });
        });
消费者示例:

public class SomeConsumer :
    IConsumer<YourMessageClass>
{
    public async Task Consume(ConsumeContext<YourMessageClass> context)
    {
        await Console.Out.WriteLineAsync($"Message consumed: {context.Message.YourValue}");

    }
}
公共类消费者:
消费者
{
公共异步任务使用(使用上下文)
{
wait Console.Out.WriteLineAsync($“消息已使用:{context.Message.YourValue}”);
}
}

有关更多信息和示例,请查看官方masstransit文档:

我不能使用windows服务,但这是另一个问题,侦听器、订阅或EventingBasicConsumer的最佳方式是什么?您的建议您可以将上述内容写入web api项目中的Startup.cs。我目前正在测试它,队列被声明,消费者绑定到它。
public class SomeConsumer :
    IConsumer<YourMessageClass>
{
    public async Task Consume(ConsumeContext<YourMessageClass> context)
    {
        await Console.Out.WriteLineAsync($"Message consumed: {context.Message.YourValue}");

    }
}