#c# #asp.net #rabbitmq #monitoring
#c# #asp.net #rabbitmq #мониторинг
Вопрос:
Всякий раз, когда RabbitMQ получает какие-либо сообщения, он должен запускать некоторые функции. Как я могу этого добиться?
Комментарии:
1. Согласно Docs , один из простейших методов с Rabbit . Сетевой клиент должен использовать
EventingBasicConsumer
и обрабатыватьReceived
событие. Абстракции еще более высокого уровня возможны с использованием дополнительных, хотя и самоуверенных библиотек, таких как EasyNetQ2. Да, это работает, спасибо
Ответ №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);