Как запустить некоторые функции для входящих сообщений в RabbitMQ

#c# #asp.net #rabbitmq #monitoring

#c# #asp.net #rabbitmq #мониторинг

Вопрос:

Всякий раз, когда RabbitMQ получает какие-либо сообщения, он должен запускать некоторые функции. Как я могу этого добиться?

Комментарии:

1. Согласно Docs , один из простейших методов с Rabbit . Сетевой клиент должен использовать EventingBasicConsumer и обрабатывать Received событие. Абстракции еще более высокого уровня возможны с использованием дополнительных, хотя и самоуверенных библиотек, таких как EasyNetQ

2. Да, это работает, спасибо

Ответ №1:

Мы можем использовать событие получения для выполнения функциональности. Приведенный ниже пример кода показывает, как сделать то же самое.

      ConnectionFactory oFactory = new ConnectionFactory();
     oFactory.UserName = oRabbitMQData.userName;
     oFactory.Password = oRabbitMQData.password;
     oFactory.VirtualHost = oRabbitMQData.virtualHost;
     oFactory.HostName = oRabbitMQData.hostName;
     oFactory.Port = oRabbitMQData.port;

     var connection = oFactory.CreateConnection();

     var channel = connection.CreateModel();
     // setup signal
     var signal = new ManualResetEvent(true);

     oRabbitMQConnections.Add(connection);
     oRabbitMQChannels.Add(channel);

     var consumer = new EventingBasicConsumer(channel);
     byte[] messageBody = null;

     consumer.Received  = (sender, args) =>
     {

        messageBody = args.Body;
        string sMsg = UTF8Encoding.UTF8.GetString(messageBody);

        // process your message or store for later
        // set signal

        channel.BasicAck(args.DeliveryTag, false);

       // Do something

        signal.Set();
     };

     // start consuming
     channel.BasicConsume(oRabbitMQData.queueName, false, consumer);