Verwendung von Python Rabbitmq (3)

黄舟
Freigeben: 2017-01-17 14:54:49
Original
1847 Leute haben es durchsucht

Im obigen Artikel geht es um die Arbeitswarteschlange. Jede Nachricht wird nur an einen der Empfänger gesendet. Wenn Sie die Nachricht senden müssen, damit jeder Empfänger sie empfangen kann, müssen Sie einen Schalter verwenden.


Das Funktionsprinzip des Switches: Das Nachrichtensenderende sendet die Nachricht zuerst an den Switch, und der Switch sendet die Nachricht dann an die gebundene Nachrichtenwarteschlange und dann an jede Das empfangende Ende kann Informationen in ihren jeweiligen Nachrichtenwarteschlangen empfangen.

Verwendung von Python Rabbitmq (3)

Funktionsprinzip des Rabbitmq-Schalters


Im Folgenden werden send.py und Receive.py verwendet, um die Funktion von zu simulieren den Schalter. send.py repräsentiert das sendende Ende und require.py repräsentiert das empfangende Ende.


Receive.py-Codeanalyse


Im Vergleich zu Receive.py im ersten Artikel werden hauptsächlich zwei Änderungen vorgenommen wurden erstellt:

Definieren Sie den Schalter
Anstatt die Hallo-Warteschlange zu verwenden, wird eine temporäre Warteschlange zufällig generiert und an den Schalter gebunden

#!/usr/bin/env python
#coding=utf8
import pika
connection= pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel= connection.channel()
#定义交换机
channel.exchange_declare(exchange='messages',type='fanout')
#随机生成队列,并绑定到交换机上
result= channel.queue_declare(exclusive=True)
queue_name= result.method.queue
channel.queue_bind(exchange='messages', queue=queue_name)
def callback(ch, method, properties, body):
print " [x] Received %r" % (body,)
channel.basic_consume(callback, queue=queue_name, no_ack=True)
print ' [*] Waiting for messages. To exit press CTRL+C'
channel.start_consuming()
Nach dem Login kopieren

Im obigen Beispielcode queue_declare Der Parameter exklusiv = True bedeutet, dass beim Beenden des empfangenden Endes die vorübergehend generierte Warteschlange zerstört wird, sodass keine Ressourcen belegt werden. Führen Sie dieses Programm aus und verwenden Sie dann den Befehl Rabbitmqctl list_exchanges, um die Switch-Informationen anzuzeigen:

Verwendung von Python Rabbitmq (3)

rabbitmq Switch Information View


wobei rot Der Rahmen ist der im obigen Beispiel definierte Schalter. Verwenden Sie dann Rabbitmqctl list_queues, um die Nachrichtenwarteschlangensituation zu überprüfen:

Verwendung von Python Rabbitmq (3)

Rabbitmq-Warteschlangeninformationsansicht


Das rote Kästchen ist zufällig generierte Nachrichtenwarteschlange.


send.py-Codeanalyse


Im Vergleich zu send.py im ersten Artikel habe ich nur zwei Änderungen vorgenommen :

Definieren Sie den Austausch
Anstatt die Nachricht an die Hallo-Warteschlange zu senden, wird sie an den Austausch gesendet

#!/usr/bin/env python
#coding=utf8
import pika
connection= pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel= connection.channel()
#定义交换机
channel.exchange_declare(exchange='messages',type='fanout')
#将消息发送到交换机
channel.basic_publish(exchange='messages', routing_key='', body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
Nach dem Login kopieren

Im obigen Beispielcode der Parameteraustausch von basic_publish Methode ist festgelegt Für den entsprechenden Switch muss Routing_key nicht festgelegt werden, da er rundgesendet und an alle Warteschlangen gesendet wird.


Wenn Exchange leer ist, bedeutet dies, dass ein anonymer Schalter verwendet wird. Im Bild der Schalterinformationen oben können Sie sehen, dass es einen Schalter wie amq.* gibt. Dies ist der Standardschalter des Systems. Routing_key muss nur angegeben werden, wenn ein anonymer Switch verwendet wird, der angibt, an welche Warteschlange er gesendet wird. Das Beispiel im ersten Artikel demonstriert diese Funktionalität.


Öffnen Sie ein anderes Terminal und führen Sie send.py aus. Sie können beobachten, dass Empfang.py die Nachricht empfangen hat. Wenn mehrere Terminals „receive.py“ ausführen, empfängt jedes „receive.py“ die Nachricht.

Das Obige ist der Inhalt der Verwendung von Python Rabbitmq (3). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!