RabbitMQ C # основанный на сообщениях слушатель - PullRequest
0 голосов
/ 10 мая 2018

Я хочу веб-приложение, и в бэкэнде я открываю новый поток и запускаю прослушиватель. Что я хочу, открываем соединение один раз и запускаем обработчик rabbitmq, а когда приходит новое сообщение, оно обрабатывается в фоновом режиме. Каков наилучший подход для этого?

1 Ответ

0 голосов
/ 10 мая 2018

Зачем вам нужно прослушивать события в веб-приложении?

Вместо этого напишите службу Windows, используя topshelf и masstransit в качестве клиента rabbitmq.

Вы можете подключиться к 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>(); });
        });

И запустить конфигуратор шины:

        busControl.Start();

Пример потребителя:

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

    }
}

Для получения дополнительной информации и примера взгляните на официальную документацию по masstransit: http://masstransit -project.com / MassTransit / использовании / message-consumer.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...