私はRabbitMQを初めて使用しています。 私は、whileループを使って、キューに新しく追加されたメッセージを探すことができることを知っています。しかし、私はそのように行きたくありません。 EventingBasicConsumer Receivedイベントハンドラも試しましたが、サブスクライバコードが初めて実行されているときに存在するメッセージに対してのみトリガされます。新しく追加されたメッセージは、私のためにこのコードを引き起こすものではありません。キューに新しいメッセージがある場合、RibbitMQが私に通知する方法はありますか?新しいメッセージがあるたびにRabbitMQからWebアプリケーションに通知するようにします。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.");
}
}
}
2番目のチュートリアルは見たことがありますか?https://www.rabbitmq.com/tutorials/tutorial-two-java.htmlかなり簡単です。単にhandleDeliveryメソッドを実装してください。 – cantSleepNow