我设置了一个主题交换器,消费者队列与“#.topic”绑定(bind)。我想根据前缀使用不同的确认策略。完整的路由 key 是否已发送给消费者?如果是这样,我如何访问它?根据 AMQP 概念的答案可能就足够了,但涉及 rabbitmq-c 的答案将是理想的。
最佳答案
即使您像在示例中给出的那样进行绑定(bind),收到的消息也包含完整的路由 key 。这意味着您可以提取它以帮助您处理消息。不幸的是,我只知道如何在 Java 中执行此操作,因此请尝试从那里进行推断。
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String routingKey = delivery.getEnvelope().getRoutingKey();
交付对象包含一个主体,它是有效负载,可以使用 delivery.getBody()
和一个包含其他信息(如完整路由 key )的信封对象进行检索。
关于c - AMQP - 消费者是否有权访问路由 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455600/