日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python使用rabbitMQ介绍五(话题模式)

發布時間:2023/12/20 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python使用rabbitMQ介绍五(话题模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、模式介紹

話題模式(Topic)基本思想和路由模式是一樣的,只不過路由鍵支持模糊匹配,符號“#”匹配一個或多個詞,符號“*”匹配不多不少一個詞

?話題模式相當于消息的模糊匹配,或者按照正則匹配。其中

# 是通配符,匹配一個或者多個單詞

* 代表匹配一個單詞

?

模式提醒:

當使用#來收消息時,會接收到所有的消息,這樣和fanout模式一樣了。

當routing key中不含*或者#時,則topic的模式退化為direct的一對一模式。

隊列模型:

?

?

二、代碼示例

?發布者:

1 #!/usr/bin/env python 2 import pika 3 import sys 4 5 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 6 channel = connection.channel() 7 8 channel.exchange_declare(exchange='topic_logs', 9 exchange_type='topic') 10 11 routing_key = ['#', "kern.critical", "A critical kernel error"] 12 for i in range(10): 13 message = '{} msg at : routing key {}'.format(i, routing_key[i % 3]) 14 channel.basic_publish(exchange='topic_logs', 15 routing_key=routing_key[i % 3], 16 body=message) 17 print(" [x] Sent :%r" % (message)) 18 connection.close()

?

消費者:

1 import pika 2 import sys 3 4 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 5 channel = connection.channel() 6 7 channel.exchange_declare(exchange='topic_logs', 8 exchange_type='topic') 9 10 result = channel.queue_declare(exclusive=True) 11 queue_name = result.method.queue 12 13 binding_key = "#" 14 15 channel.queue_bind(exchange='topic_logs', 16 queue=queue_name, 17 routing_key=binding_key) 18 19 print(' [*] Waiting for logs. To exit press CTRL+C') 20 21 def callback(ch, method, properties, body): 22 print(" [x] %r:%r" % (method.routing_key, body)) 23 24 channel.basic_consume(callback, 25 queue=queue_name, 26 no_ack=True) 27 28 channel.start_consuming()

?

發布者輸出:

[x] Sent :'0 msg at : routing key #'[x] Sent :'1 msg at : routing key kern.critical'[x] Sent :'2 msg at : routing key error.critical'[x] Sent :'3 msg at : routing key #'[x] Sent :'4 msg at : routing key kern.critical'[x] Sent :'5 msg at : routing key error.critical'[x] Sent :'6 msg at : routing key #'[x] Sent :'7 msg at : routing key kern.critical'[x] Sent :'8 msg at : routing key error.critical'[x] Sent :'9 msg at : routing key #'

消費者輸出:

all:可以看到接收到所有的消息

[*] Waiting for logs. To exit press CTRL+C[x] '#':b'0 msg at : routing key #'[x] 'kern.critical':b'1 msg at : routing key kern.critical'[x] 'error.critical':b'2 msg at : routing key error.critical'[x] '#':b'3 msg at : routing key #'[x] 'kern.critical':b'4 msg at : routing key kern.critical'[x] 'error.critical':b'5 msg at : routing key error.critical'[x] '#':b'6 msg at : routing key #'[x] 'kern.critical':b'7 msg at : routing key kern.critical'[x] 'error.critical':b'8 msg at : routing key error.critical'[x] '#':b'9 msg at : routing key #'

消費者“critical”,只接收含critical的消息

[*] Waiting for logs. To exit press CTRL+C[x] 'kern.critical':b'1 msg at : routing key kern.critical'[x] 'error.critical':b'2 msg at : routing key error.critical'[x] 'kern.critical':b'4 msg at : routing key kern.critical'[x] 'error.critical':b'5 msg at : routing key error.critical'[x] 'kern.critical':b'7 msg at : routing key kern.critical'[x] 'error.critical':b'8 msg at : routing key error.critical'

消費者“kern”,只接收含kern的消息

[*] Waiting for logs. To exit press CTRL+C[x] 'kern.critical':b'1 msg at : routing key kern.critical'[x] 'kern.critical':b'4 msg at : routing key kern.critical'[x] 'kern.critical':b'7 msg at : routing key kern.critical'

?

三、隊列信息

?在管理頁面上可以看到三個隊列信息,routing key對應著三個隊列的配置

?

轉載于:https://www.cnblogs.com/StitchSun/p/10293495.html

總結

以上是生活随笔為你收集整理的python使用rabbitMQ介绍五(话题模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。