2017-05-12 7 views
3

私はチャネルで2つのキューを使用します。名1またはName2は:RabbitMQのキューを検出する

channel.QueueDeclare(queue: "Name1", 
    durable: false, 
    exclusive: false, 
    autoDelete: false, 
    arguments: null); 

channel.QueueDeclare(queue: "Name2", 
    durable: false, 
    exclusive: false, 
    autoDelete: false, 

var consumer = new EventingBasicConsumer(channel);           arguments: null); 
consumer.Received += (model, ea) => 
    {  
     var body = ea.Body; 
     var message = Encoding.UTF8.GetString(body); 
     Console.WriteLine(message); 
    } 

channel.BasicConsume(queue: "Name2", 
    noAck: true, 
    consumer: consumer); 

channel.BasicConsume(queue: "Name1", 
    noAck: true, 
    consumer: consumer); 

どのように私はメッセージを受け取ったキューを検出することができます は、私は2つのキュー(名1 NAME2さん)を宣言しますか?

答えて

1

以下のコードでは、パラメータeaに回答が必要です。

consumer.Received += (model, ea) => 
{ 
    string pQueueName = ea.RoutingKey; 
} 

これは、キュー名についての情報を提供しRoutingKeyと呼ばれるメンバ変数を持つRabbitMQ.Client.Events名前空間の下にBasicDeliverEventArgsクラスです。また、メッセージが最初に公開されたときにルーティングキーが使用されることにも注意してください。

オプション2:キューごとに異なるモデルとコンシューマーを持つ方が処理が容易なキューを追跡する方が簡単かもしれません。

関連する問題