topic型交换机实现灵活路由键的组合分发
[root@jinkang-e2elog rabbitmq]# cat topic-send.py #!/usr/bin/env python # -*- coding: UTF-8 -*- import pika import sys connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='topic_logs', exchange_type='topic') severity = sys.argv[1] if len(sys.argv) > 1 else 'vm.centos' message = ' '.join(sys.argv[2:]) or 'Hello World!' channel.basic_publish( exchange='topic_logs', routing_key=severity, body=message) print(" [x] Sent %r:%r" % (severity, message)) connection.close()
#!/usr/bin/env python import pika import sys connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.exchange_declare(exchange='topic_logs', exchange_type='topic') result = channel.queue_declare(queue='', exclusive=True) queue_name = result.method.queue bonding_keys = sys.argv[1:] if not bonding_keys: sys.stderr.write("Usage: %s [info] [warning] [error]\n" % sys.argv[0]) sys.exit(1) for bonding_key in bonding_keys: channel.queue_bind( exchange='topic_logs', queue=queue_name, routing_key=bonding_key) print(' [*] Waiting for logs. To exit press CTRL+C') def callback(ch, method, properties, body): print(" [x] %r:%r" % (method.routing_key, body)) channel.basic_consume( queue=queue_name, on_message_callback=callback, auto_ack=True) channel.start_consuming()
以上demo 实现一个 环境类型.OS类型的 信息的发送分发
python topic-send.py ph.debian
python topic-send.py vm.debian
python topic-send.py ph.centos
实现虚拟机/物理机 不同OS 的信息的发送分发。
python topic-rec.py "ph.*"
python topic-rec.py "vm.*"
python topic-rec.py "#"
* 星号用来表示任务一个单词
# 井号用来表示数量的单词(0个或无数个)
使用topic 型交换机 可以实现复灵活的 信息的分发实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程