如何使用C#从RabbitMQ中的队列接收单个消息

Par*_*ani 2 c# rabbitmq

我想知道我一次只能收到一条消息,这是基本代码

var factory = new ConnectionFactory() { HostName = "localhost" };
var connection = factory.CreateConnection()
var channel = connection.CreateModel()
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);

BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Response.Write(message + " Received.");
Run Code Online (Sandbox Code Playgroud)

pin*_*ain 10

如果您要等待1条消息,请继续使用channel.BasicConsume,但在单条消息后留下消费者方法.

如果您只收到1条消息(如果队列中至少存在1条消息)那么 channel.BasicGet

var data = channel.BasicGet(queueName, true);
Run Code Online (Sandbox Code Playgroud)

PS:

CloudAMQP与.NET有很好的例子:入门页面.


Thi*_*iro 5

如果您需要需要转换的消息中的文本,请补充最后一条消息:

var data = channel.BasicGet(QueueName, true);
var message = System.Text.Encoding.UTF8.GetString(data.Body);
Run Code Online (Sandbox Code Playgroud)