direct_client:广播接收

 #!/usr/bin/env python

 #_*_coding:utf-8_*_

 import pika,time,sys

 connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel() channel.exchange_declare(exchange='direct_logs',#定义一个接收的频道
type='direct') reult=channel.queue_declare(exclusive=True)#随机生成唯一的队列名,会在消息接收后自动删除
queuename=reult.method.queue#队列名 自动生成 severities = sys.argv[1:]
if not severities:
sys.stderr.write("Usage: %s [info] [warning] [error]\n" % sys.argv[0])#启动接收的消息级别
sys.exit(1) for severity in severities:#循环接收各级别的消息
channel.queue_bind(exchange='direct_logs',
queue=queuename,
routing_key=severity) def callback(ch, method, properties, body):#回调函数
print('接收消息中…………')
#time.sleep(5)
print(" [x] Received %r" % body.decode())
ch.basic_ack(delivery_tag=method.delivery_tag) channel.basic_qos(prefetch_count=1)#同时只处理一个消息
channel.basic_consume(callback,#接收到消息调用回调函数 callback
queue=queuename,
#no_ack=True
) print(' [*] 接收消息中. To exit press CTRL+C') channel.start_consuming()#启动消息接收

rabbitmq_server_direct 服务端 广播

 #!/usr/bin/env python
#{data} {time}
#_*_coding:utf-8_*_ import pika,sys,time
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()#管道 severity = sys.argv[1] if len(sys.argv) > 1 else 'info'#启动参数 默认无参数为 info 级别
msg=''.join(sys.argv[2:]) or 'info:消息默认发送………'#启动参数 为空,发默认消息
for i in range(10):
time.sleep(1)
channel.basic_publish(exchange='direct_logs',#绑定频道
routing_key=severity,#默认的消息队列级别
body=msg+str(i),
#properties=pika.BasicProperties(delivery_mode=2)#持久化 广播不能使用
)
print(msg,severity)
connection.close()
#channel.close()

rabbitmq_server:


rabbitmq_server_2: 消息持久化

 import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()#管道 #声明queue
#channel.queue_declare(queue='hello')#队列名 hello
channel.queue_declare(queue='hello',durable=True)#队列名 hello,持久化队列 for i in range(10): channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!%s'%i,
properties=pika.BasicProperties(delivery_mode=2))
print(" [x] Sent 'Hello World!'",i)
connection.close()

rabbitmq_server_fanout.   fanout 模式发送端

 import pika,sys,time
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()#管道 #声明queue 广播模式不用声明队列
#channel.queue_declare(queue='hello')#队列名 hello
#channel.queue_declare(queue='hello',durable=True)#队列名 hello,持久化队列 argv=input('输入消息')
msg=''.join(sys.argv[1:]) or 'info:消息默认发送………'
for i in range(10):
time.sleep(1)
channel.basic_publish(exchange='logs',#绑定频道
#routing_key='hello',
routing_key='',
body=msg+str(i),
#properties=pika.BasicProperties(delivery_mode=2)#持久化 广播不能使用
)
print(msg,i)
#connection.close()

rabbitmq_client_fanout   fanout 接收端

 #!/usr/bin/env python
#{data} {time} #_*_coding:utf-8_*_ import pika,time connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
#channel.queue_declare(queue='hello2')#服务端与客户端的设置需一致,不然会报错
#channel.queue_declare(queue='hello2',durable=True)#队列名 hello,持久化队列
channel.exchange_declare(exchange='logs',#绑定频道
type='fanout')#接收类型
reult=channel.queue_declare(exclusive=True)#随机生成唯一的队列名,会在消息接收后自动删除
queuename=reult.method.queue#队列名 自动生成
channel.queue_bind(exchange='logs',#先要绑定频道
queue=queuename
) def callback(ch, method, properties, body):#回调函数
print('接收消息中…………')
#time.sleep(5)
print(" [x] Received %r" % body.decode())
ch.basic_ack(delivery_tag=method.delivery_tag) channel.basic_qos(prefetch_count=1)#同时只处理一个消息
channel.basic_consume(callback,#接收到消息调用回调函数 callback
queue=queuename,
#no_ack=True
) print(' [*] 接收消息中. To exit press CTRL+C') channel.start_consuming()#启动消息接收

最新文章

  1. sqlserver 2008 孤立用户解决方法
  2. java基础-继承:矩形体积类问题
  3. ASP.NET MVC Global.cs - 应用程序事件
  4. Hibernate映射问题之OneToOne【自己整理】
  5. Linux查看用户登陆历史记录
  6. 解决Eclipse中Java工程间循环引用而报错的问题
  7. Tomcat优化内存以及连接数
  8. 认识 CXF(WebService框架)
  9. 借助Docker单机秒开数十万TCP连接
  10. Insert Into select 与 Select Into 哪个更快?
  11. AX2012 ERP “系统慢”调优---跟踪SQL执行,优化代码
  12. 安卓学习 Drawable对象
  13. 前段clam安装
  14. faiss CPU版本+GPU版本安装
  15. 使用"+"进行字符串拼接
  16. Python 爬虫入门(三)—— 寻找合适的爬取策略
  17. Struts简单入门实例
  18. NIO学习之Channel
  19. [ SNOI 2013 ] Quare
  20. YTU 2906: 多重继承 日期与时间

热门文章

  1. jvm加载类的7个步骤
  2. tomcat-四种运行模式和三种部署模式(优化)
  3. docker进阶篇(一) ---- Volume(数据卷)
  4. welcome-file-list修改后不生效
  5. 阅读Google Protocol Buffers 指南,整理pb语法
  6. 2.WF 4.5 流程引擎设计思路
  7. How to translate virtual to physical addresses through /proc/pid/pagemap
  8. ES启动报错最大进程数太少
  9. Log4j 随笔
  10. FFmpeg时间戳详解