我是RabbitMQ的新手。 我知道,通過使用while循環,我可以查找Queue中新添加的消息。但我不想那樣。我還嘗試了EventingBasicConsumer Received事件處理程序,但只觸發用戶代碼第一次運行時出現的消息。任何新添加的消息都不會爲我觸發此代碼。如果隊列中有新消息,RibbitMQ會通知我嗎?我希望我的Web應用程序在有新消息的時候通過RabbitMQ得到通知。如何在RabbitMQ Queue中添加新消息時收到通知?
Receiver :
public static class RabbitMQConsumer2
{
public static void Receive()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.ExchangeDeclare(exchange: "logs", type: "fanout");
channel.QueueDeclare("AAA", true, false, false, null);
channel.QueueBind(queue: "AAA",
exchange: "logs",
routingKey: "");
Debug.WriteLine(" [*] Waiting for logs.");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Debug.WriteLine(" [x] {0}", message);
};
channel.BasicConsume(queue: "AAA",
noAck: true,
consumer: consumer);
Debug.WriteLine(" Press [enter] to exit.");
}
}
}
你見過第二個教程嗎?https://www.rabbitmq.com/tutorials/tutorial-two-java.html這很容易,你只需實現'handleDelivery'方法 – cantSleepNow