【问题标题】:Detect queue in RabbitMQ在 RabbitMQ 中检测队列
【发布时间】:2017-05-12 06:29:41
【问题描述】:

我在频道中使用了 2 个队列。 我声明了 2 个队列(Name1 和 Name2):

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);

如何检测哪个队列收到了消息: Name1 或 Name2 ?

【问题讨论】:

    标签: c# .net rabbitmq


    【解决方案1】:

    在下面的代码中,参数 ea 应该有你的答案。

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

    它是 RabbitMQ.Client.Events 命名空间下的 BasicDeliverEventArgs 类,它有一个名为 RoutingKey 的成员变量,它提供有关队列名称的信息。另请注意,最初发布消息时使用了路由键。

    选项 2:每个队列有不同的模型和消费者也可能更容易,这样更容易跟踪它正在处理的队列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 2023-04-08
      • 2014-08-24
      • 2021-06-14
      • 2011-10-08
      • 2012-10-21
      相关资源
      最近更新 更多