python版本:   2.7.14

一 消息生产者代码:

 1 # -*- coding: utf-8 -*-
 2
 3 import json
 4 import pika
 5 import urllib
 6 import urllib2
 7 import chardet
 8 import sys
 9 import json
10 from common import CommonMethod
11 import pika
12 import time
13
14 HOST_NAME = "172.21.204.14"
15 USER_NAME = "xxx"
16 PASSWORD = "xxx"
17
18 # 1."Hello World!"
19 def hello_world():
20     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
21     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
22     channel = connection.channel()
23
24     channel.queue_declare(queue='hello')
25     channel.basic_publish(exchange='',
26                             routing_key='hello',      # specify queue  name
27                             body='Hello World!')
28     print(" [x] Sent 'Hello World!'")
29     connection.close()
30
31 # 2."Work queues"
32 def new_task():
33     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
34     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
35     channel = connection.channel()
36
37     channel.queue_declare(queue='task_queue', durable=True)   # 设置队列持久化
38     message = ' '.join(sys.argv[1:]) or "Hello World!"
39     channel.basic_publish(exchange='',
40                         routing_key='task_queue',
41                         body=message,
42                         properties=pika.BasicProperties(
43                             delivery_mode = 2,                # 设置消息持久化
44                         ))
45     print(" [x] Sent %r" % message)
46     connection.close()
47
48 # 3."Publish/Subscribe"
49 def emit_log(message):
50     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
51     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
52     channel = connection.channel()
53
54     channel.exchange_declare(exchange='logs',        # 申明logs交换机
55                          exchange_type='fanout')     # 交换机类型: 发布/订阅
56
57     channel.basic_publish(exchange='logs',
58                         routing_key='',
59                         body=message)
60     print(" [x] Sent %r" % message)
61     connection.close()
62
63 # 4."Routing"
64 def emit_log_direct(log_level,message):
65     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
66     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
67     channel = connection.channel()
68
69     channel.exchange_declare(exchange='direct_logs', # 申明logs交换机
70                          exchange_type='direct')     # 交换机类型: 路由(Routing)
71
72     channel.basic_publish(exchange='direct_logs',
73                         routing_key=log_level,
74                         body=message)
75     print(" [x] Sent %r:%r" % (log_level, message))
76     connection.close()
77
78 emit_log_direct("info", "info log message:...")
79 emit_log_direct("error", "error log message:...")
80
81 # 5."Topic"
82 # 与Routing模式类似,比Routing模式多了routing_key可以使用通配符"*","#"等,使用更加灵活

View Code

二 消息消费者代码:

 1 # -*- coding: utf-8 -*-
 2
 3 import json
 4 import pika
 5 import urllib
 6 import urllib2
 7 import chardet
 8 import sys
 9 import json
10 from common import CommonMethod
11 import pika
12 import time
13
14 HOST_NAME = "172.21.204.14"
15 USER_NAME = "xxx"
16 PASSWORD = "xxx"
17
18 # 1."Hello World!"
19 def hello_world():
20     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
21     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
22     channel = connection.channel()
23
24     channel.queue_declare(queue='hello')
25     channel.basic_publish(exchange='',
26                             routing_key='hello',      # specify queue  name
27                             body='Hello World!')
28     print(" [x] Sent 'Hello World!'")
29     connection.close()
30
31 # 2."Work queues"
32 def new_task():
33     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
34     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
35     channel = connection.channel()
36
37     channel.queue_declare(queue='task_queue', durable=True)   # 设置队列持久化
38     message = ' '.join(sys.argv[1:]) or "Hello World!"
39     channel.basic_publish(exchange='',
40                         routing_key='task_queue',
41                         body=message,
42                         properties=pika.BasicProperties(
43                             delivery_mode = 2,                # 设置消息持久化
44                         ))
45     print(" [x] Sent %r" % message)
46     connection.close()
47
48 # 3."Publish/Subscribe"
49 def emit_log(message):
50     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
51     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
52     channel = connection.channel()
53
54     channel.exchange_declare(exchange='logs',        # 申明logs交换机
55                          exchange_type='fanout')     # 交换机类型: 发布/订阅
56
57     channel.basic_publish(exchange='logs',
58                         routing_key='',
59                         body=message)
60     print(" [x] Sent %r" % message)
61     connection.close()
62
63 # 4."Routing"
64 def emit_log_direct(log_level,message):
65     credentials = pika.PlainCredentials(USER_NAME, PASSWORD)
66     connection = pika.BlockingConnection(pika.ConnectionParameters(HOST_NAME, 5672,'/', credentials))
67     channel = connection.channel()
68
69     channel.exchange_declare(exchange='direct_logs', # 申明logs交换机
70                          exchange_type='direct')     # 交换机类型: 路由(Routing)
71
72     channel.basic_publish(exchange='direct_logs',
73                         routing_key=log_level,
74                         body=message)
75     print(" [x] Sent %r:%r" % (log_level, message))
76     connection.close()
77
78 emit_log_direct("info", "info log message:...")
79 emit_log_direct("error", "error log message:...")
80
81 # 5."Topic"
82 # 与Routing模式类似,比Routing模式多了routing_key可以使用通配符"*","#"等,使用更加灵活

View Code

三 图片

官网参考文档: http://www.rabbitmq.com/getstarted.html

转载于:https://www.cnblogs.com/miaosha5s/p/9544424.html

Python操作Rabbit MQ的5种模式相关推荐

  1. Python 操作 Rabbit MQ 发布/订阅 (五)

    Python 操作 Rabbit MQ 发布/订阅 (五) 一.发布.订阅: 我们将一个消息分发给多个消费者,这种模式被称为发布/订阅. 为了更好的理解这个模式,我们将构建一个日志系统,它包括两个程序 ...

  2. Python中import模块的两种模式

    import <模块名> import pandasimport pandas as pd 使用函数方式:<模块名>.<函数名>(<函数参数>),或者& ...

  3. 一篇文章学会RabbitMQ。SpringAMQP操作RabbitMQ。RabbitMQ五种模式及其代码实现。

    目录 一.同步与异步调用: 一)同步调用: 二)异步调用: 三)使用建议: 四)MQ种类 二.SpringAMQP 1.导入依赖: 2.启动相关服务: 3.配置序列化: 三.Rabbit五种关系模式: ...

  4. Python操作MySQL数据库的三种方法

    1. MySQLdb 的使用 (1) 什么是MySQLdb?   MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 M ...

  5. Python摇色子游戏(两种模式)

    1024快乐!! 送给大家一个小游戏 ^v^ 玩法: 开始可以选择双人或单人,然后就开始游戏. 你会摇到1~6的随机数,还会触发奖励或惩罚. 谁先到重点谁就赢. 代码: #-*- coding: &l ...

  6. python的读取纯文本文件的几种模式

    python读取纯文本文件利用open函数: fout = open(path,[arg]) path表示你要读取的文件的路径,可以是绝对路径,也可以是相对路径. arg表示你读取这个文件采取的模式, ...

  7. python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型

    fetchall()将结果放在二维数组里面,每一行的结果在元组里面 import pymysql def export(table_name): conn =pymysql.connect(host ...

  8. python操作文本之CSV文件

    python 操作csv文件有两种方法,一种是使用pandas来读写csv文件,第二种是使用csv模块读写csv文件 一.pandas读写csv文件 1.df = pd.read_csv(filepa ...

  9. python操作手机app超详细步骤

    〝 古人学问遗无力,少壮功夫老始成 〞 python操作手机app超详细步骤,现在很多app的都要刷经验打怪升级啥的,这些枯燥千篇一律但是很耗费时间的玩法,可以使用app自动去操作,解放双手,释放时间 ...

最新文章

  1. python运用范围_如何在python中使用某个范围对数字列表进行分组?
  2. linux yum nothing,Centos6.9 yum安装htop报错解决过程
  3. [SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
  4. 互动直播的技术细节和解决方案实践经验谈
  5. 利用redis实现分布式锁:加锁与解锁
  6. 为什么要用非关系数据库?
  7. 进程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) day38
  8. non-overlapping-intervals
  9. 对scala函数总结
  10. 调用webservice超时问题的解决(转载)
  11. 初学者|一文读懂命名实体识别
  12. Python编写:好友管理系统
  13. 好队友--超好用的函数插件大全,再也不用为excel函数使用烦恼啦
  14. 南京信息工程大学计算机考研怎么样,南京信息工程大学就业怎么样,考研好不好?...
  15. linux里面ping地址停不下来解决方法
  16. MSP430F149利用JTAG以及BSL下载配置图解!
  17. 2019小程序发展趋势
  18. 电子防盗标签 之二:声磁软标签 《转》
  19. 《王者荣耀》伤害计算(数值研究)
  20. c++计算圆柱体表面积

热门文章

  1. 正则表达式的比较JDK1.4 vs jakarta
  2. 在python中、下列代码的输出是什么-关于下列python多线程代码输出效果的疑问?...
  3. python自学教材-最好的Python入门教材是哪本?
  4. python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文
  5. 学会python编程容易吗-学习武汉Python编程培训容易吗?别人都是怎么学习的?
  6. python爬百度翻译-教大家用python爬取百度翻译,超简单
  7. python软件下载免费还是收费-为什么python最强大的IDE是收费的PyCharm?
  8. 用python画爱心-python画一个玫瑰和一个爱心
  9. python turtle画彩虹-Python turtle 绘制彩色螺旋线
  10. python timer使用-python中timer定时器常用的两种实现方法