나는 RabbitMQ를 처음 사용합니다. while 루프를 사용하면 Queue에 새로 추가 된 메시지를 찾을 수 있습니다. 그러나 나는 그런 식으로 가고 싶지 않다. 또한 EventingBasicConsumer Received 이벤트 처리기를 시도했지만 구독자 코드가 처음 실행될 때 나타나는 메시지 만 트리거합니다. 새로 추가 된 메시지는이 코드를 유발하지 않습니다. 대기열에 새로운 메시지가있는 경우 RibbitMQ에서 알려주는 방법이 있습니까? 새 메시지가있을 때마다 RabbitMQ가 내 웹 응용 프로그램에 알리 길 원합니다.새 메시지가 RabbitMQ 대기열에 추가되면 알림을받는 방법?
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