2012-11-19 8 views
6

Ich habe einen Themenaustausch eingerichtet, so dass die Verbraucherwarteschlange mit "# .topic" gebunden ist. Ich würde gerne verschiedene Bestätigungsstrategien basierend auf dem Präfix verwenden. Wird der vollständige Routing-Schlüssel an den Verbraucher gesendet? Wenn ja, wie greife ich darauf zu? Eine Antwort in Form von AMQP-Konzepten wäre wahrscheinlich ausreichend, aber eine Antwort mit Rabbitmq-c wäre ideal.AMQP - Verfügt der Kunde über Zugriff auf den Routing-Schlüssel?

Antwort

7

Auch wenn Sie eine Bindung wie in Ihrem Beispiel angegeben haben, enthält die empfangene Nachricht den vollständigen Routing-Schlüssel. Dies bedeutet, dass Sie das extrahieren können, um Ihnen bei der Verarbeitung der Nachricht zu helfen. Leider weiß ich nur, wie man das in Java macht, also versuche von dort zu extrapolieren.

QueueingConsumer.Delivery delivery = consumer.nextDelivery(); 
String routingKey = delivery.getEnvelope().getRoutingKey(); 

Das Lieferobjekt enthält einen Körper, der die Nutzlast ist und mit delivery.getBody() und einem Hüllobjekt werden abzurufen, die wie der vollständigen Routing-Key andere Informationen enthalten.

+0

In C# api kann auf den Routing-Schlüssel über die Eigenschaft 'RabbitMQ.Client.Events.BasicDeliverEventArgs.RoutingKey' zugegriffen werden (das Objekt im Rückruf von Basic Deliver Event). – Dinei