【发布时间】:2012-11-19 14:15:52
【问题描述】:
我已经设置了一个主题交换,以便消费者队列与“#.topic”绑定。我想根据前缀使用不同的确认策略。是否将完整的路由密钥发送给消费者?如果是这样,我该如何访问它? AMQP 概念方面的答案可能就足够了,但涉及 rabbitmq-c 的答案将是理想的。
【问题讨论】:
我已经设置了一个主题交换,以便消费者队列与“#.topic”绑定。我想根据前缀使用不同的确认策略。是否将完整的路由密钥发送给消费者?如果是这样,我该如何访问它? AMQP 概念方面的答案可能就足够了,但涉及 rabbitmq-c 的答案将是理想的。
【问题讨论】:
即使您像在示例中给出的那样进行绑定,收到的消息也包含完整的路由键。这意味着您可以提取它以帮助您处理消息。不幸的是,我只知道如何在 Java 中执行此操作,因此请尝试从那里进行推断。
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String routingKey = delivery.getEnvelope().getRoutingKey();
传递对象包含一个作为有效负载的主体,可以使用delivery.getBody() 和一个包含其他信息(如完整路由键)的信封对象进行检索。
【讨论】:
RabbitMQ.Client.Events.BasicDeliverEventArgs.RoutingKey属性(Basic Deliver Event回调中的对象)访问Routing Key