The above article talked about the work queue. Each message will only be sent to one of the receivers. If the message needs to be broadcast so that every receiver can receive it, then a switch must be used.
The working principle of the switch: The message sending end first sends the message to the switch, and the switch then sends the message to the bound message queue, and then each receiving end can Information is received in their respective message queues.
Working principle of rabbitmq switch
The following uses send.py and receive.py to simulate the function of the switch. send.py represents the sending end, and receive.py represents the receiving end.
receive.py code analysis
Compared with receive.py in the first article, it mainly does Two changes have been made:
Define the switch
Instead of using the hello queue, a temporary queue is randomly generated and bound to the switch
#!/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()
In the above example code, the parameter of queue_declare is exclusive =True means that when the receiving end exits, the temporarily generated queue is destroyed so that resources will not be occupied. Run this program, and then use the rabbitmqctl list_exchanges command to view the switch information:
rabbitmq switch information view
where red The frame is the switch defined in the above example. Then use rabbitmqctl list_queues to check the message queue situation:
rabbitmq queue information view
The red box is randomly generated message queue.
send.py code analysis
Compared with send.py in the first article, I only did Two changes:
Define the switch
Instead of sending the message to the hello queue, it is sent to the switch
#!/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()
In the above example code, the parameter exchange of the basic_publish method is set to the corresponding The switch needs to broadcast and send it to all queues, so routing_key does not need to be set.
If exchange is empty, it means an anonymous switch is used. In the picture of the switch information above, you can see that there is a switch like amq.*, which is the system default switch. . Routing_key only needs to be specified when using an anonymous switch, indicating which queue it is sent to. The example in the first article demonstrates this functionality.
Open another terminal and execute send.py. You can observe that receive.py has received the message. If multiple terminals execute receive.py, each receive.py will receive the message.
The above is the content of using Python rabbitmq (3). For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

Dreamweaver Mac version
Visual web development tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function