2016-06-07 15 views
4

Ich schreibe einen automatisierten Test, um einen Verbraucher zu testen. Bisher musste ich beim Veröffentlichen von Nachrichten keinen Header hinzufügen, aber jetzt tue ich es. Und es scheint wie seine fehlende Dokumentation.So fügen Sie einen Header-Schlüssel: Wert-Paar beim Veröffentlichen einer Nachricht mit Pika

Das ist mein Verleger:

class RMQProducer(object): 

    def __init__(self, host, exchange, routing_key): 
     self.host = host 
     self.exchange = exchange 
     self.routing_key = routing_key 

    def publish_message(self, message): 
     connection = pika.BlockingConnection(pika.ConnectionParameters(self.host)) 
     channel = connection.channel() 
     message = json.dumps(message) 
     channel.basic_publish(exchange=self.exchange, 
           routing_key=self.routing_key, 
           body=message) 

ich smtn wie zu tun:

channel.basic_publish(exchange=self.exchange, 
         routing_key=self.routing_key, 
         body=message, 
         headers={"key": "value"}) 

Was ist der richtige Weg, um hinzuzufügen Header dieser Nachricht?

+0

Sie können hier ein Beispiel ansehen, das ich für Pika habe, wie man Header hinzufügt. https://github.com/eandersson/python-rabbitmq-examples/blob/master/Flask-examples/pika_async_rpc_example.py#L113 – eandersson

+0

Sie haben hier ein weiteres Beispiel mit meiner eigenen amqp-Bibliothek https://github.com/ eandersson/amqpstorm/blob/stable/Beispiele/classic_publisher.py # L16 – eandersson

Antwort

9

Sie pika.BasicProperties Header hinzufügen verwenden würde.

Die offizielle Dokumentation für Pika deckt dieses Szenario zwar nicht genau ab, aber die Dokumentation enthält die Spezifikationen. Ich würde dringend empfehlen, dass Sie this Seite bookmarken, wenn Sie pika weiter verwenden werden.

1

kann nicht sagen, wo ich diese bekommen, aber ich mag es:

props = pika.BasicProperties({'headers': {'key': 'value'}}) 
channel.basic_publish(exchange=self.exchange, 
          routing_key=self.routing_key, 
          body=message, properties = props)