【发布时间】:2018-12-19 12:52:31
【问题描述】:
我开始学习 RabbitMQ。我找到了一些关于如何使用队列消息的互联网教程。但我想知道最好的方法。今天我在计时器中使用了一个简单的代码,如果存在则返回一条消息并做一些工作。其他示例是使用 while true 循环,如下面的代码。 rabbitmq 中是否存在一些功能来注册在特定队列中发布消息时触发的方法回调?如果有其他方法,我不想检查是否存在并在 while true 循环中获取消息。谢谢。
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
【问题讨论】:
标签: c# .net rabbitmq message-queue amqp