一、生产者与消费者模式之 简单模式,原理图

二、生产者产生消息

import json
import pika
import datetime # 生产者 producer.py
def get_message():
# 产生消息入口处
for i in range(100): # 生成10条消息
message = json.dumps({'id': "10000%s" % i, "amount": 100 * i, "name": "melon", "createtime": str(datetime.datetime.now())})
producer(message)
print('i',i) def producer(message):
# 获取与rabbitmq 服务的连接,虚拟队列需要指定参数 virtual_host,如果是默认的可以不填(默认为/),也可以自己创建一个
# 报错StreamLostError: ('Transport indicated EOF',) 是因为将端口 5672 写成 15672
connection = pika.BlockingConnection(pika.ConnectionParameters(virtual_host='/melon_demo',host='82.156.19.94', port=5672, credentials=pika.PlainCredentials('guest', 'guest')))
# 创建一个 AMQP 信道(Channel),建造一个大邮箱,隶属于这家邮局的邮箱
channel = connection.channel()
# 声明消息队列melon.msg.demo.queue ,消息将在这个队列传递,如不存在,则创建
channel.queue_declare(queue='melon.msg.demo.queue')
# 向队列插入数值 routing_key的队列名为melon.msg.demo.queue,body 就是放入的消息内容,exchange指定消息在哪个队列传递,
# 这里是空的exchange但仍然能够发送消息到队列中,因为我们使用的是我们定义的空字符串exchange(默认的exchange)
# exchange指定四种模式:direct(默认),fanout, topic, 和headers
channel.basic_publish(exchange='', routing_key='melon.msg.demo.queue', body=message)
# 关闭连接
connection.close() if __name__ == "__main__":
get_message() # 程序执行入口

三、消费者消费消息

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 消费者 receive.py
import time
import pika
# 建立与rabbitmq的连接
credentials = pika.PlainCredentials("guest","guest")
connection = pika.BlockingConnection(pika.ConnectionParameters(virtual_host='/melon_demo',host='82.156.19.94', port=5672,credentials=credentials))
channel = connection.channel()
channel.queue_declare(queue="melon.msg.demo.queue") def callback(ch,method,properties,body):
print('body',body)
time.sleep(100)
print("消费者接收到了任务:%r"%body.decode("utf8"))
# 有消息来临,立即执行callback,没有消息则夯住,等待消息
# 老百姓开始去邮箱取邮件啦,队列名字是水许传
# def basic_consume(self,
# queue,
# on_message_callback,
# auto_ack=False,
# exclusive=False,
# consumer_tag=None,
# arguments=None):
# 这个参数的调用有所改动
# 第一个参数是队列
# 第二个是回调函数
# 第三个这是auto_ack=True 使用自动确认模式
channel.basic_consume("melon.msg.demo.queue",callback,True)
# 开始消费,接收消息
channel.start_consuming()

RBMQ中python案例一:简单模式的更多相关文章

  1. 14.python案例:爬取电影天堂中所有电视剧信息

    1.python案例:爬取电影天堂中所有电视剧信息 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- '''======================== ...

  2. 第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样?

    第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样? 一.    案例说明 我们上节提到了,使用property函数定义的属性不要与类内已经定义的普通实例变量重 ...

  3. 第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现

    第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现 一.    案例说明 本节将通过一个案例介绍怎么使用property定义快捷的属性访问.案例中使用Rectan ...

  4. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  5. SecureCRT中python脚本编写

    SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是Secu ...

  6. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  7. eclipse中python文本字体大小设置

    eclipse中python脚本用默认的字体和大小,注释是中文的也看不清楚,改一下字体吧 windows-preferences-python-editor-colors and fonts 其实上一 ...

  8. crontab 中 python(cx_Oracle)脚本执行时需要用户环境变量,怎么办??

    import cx_Oracle Traceback (most recent call last): File "", line 1, in ? ImportError: lib ...

  9. VS2013中Python学习环境搭建

    VS2013中Python学习笔记[环境搭建] 前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字, ...

  10. 解决忽略VScode中Python插件pylint报错的问题

    pylint是VScode中python自带的插件,可以帮助代码规范,美观. 但是有些报错是你不想看到的,你可以选择性的忽略. 例如,在re.compile()中,可以添加参数re.S使. 匹配任意字 ...

随机推荐

  1. DeepSeek 开源周回顾「GitHub 热点速览」

    上周,DeepSeek 发布的开源项目用一个词形容就是:榨干性能!由于篇幅有限,这里仅列出项目名称和简介,感兴趣的同学可以前往 DeepSeek 的开源组织页面,深入探索每个项目的精彩之处! 第一天 ...

  2. .net 8 实现 JWT 无状态设计 token [附源码]

    本文主要分为两个部分: 1.概念 2..net 8 demo 第一部分主要描述所有与 JWT 相关的概念以及词汇,及其原理:第二部分是代码示例,文末附 源码下载. * 阅读提示 :鼠标悬停在 章节标题 ...

  3. php去除金额后面多余的0(零)

    第一种: 使用floatval() 第二种: rtrim(rtrim($str, '0'), '.'); 比如$str=2.360000; 最后会输出2.36 第三种使用正则: /** * 去除多余的 ...

  4. WebKit Inside: CSS 的匹配原理

    相关文章 WebKit Inside: CSS 样式表的解析 WebKit Inside: CSS 样式表的匹配时机 WebKit Inside: Acitvie 样式表 当WebView解析完所有外 ...

  5. 关于普通程序员该如何参与AI学习的三个建议以及自己的实践

    大部分程序员在学习大语言模型的时候都比较痛苦,感觉AI是如此之近又如此之远,仿佛能搞明白一点,又好像什么也没明白.就像我们在很远的地方看珠穆拉玛峰,感觉它就像一个不大的山包,感觉只要自己做足准备咬咬牙 ...

  6. 生产环境swarm集群规划和管理

    swarm集群角色 swarm集群中有两种角色,manager node和 worker ndoe. manager的功能: 维护集群状态 任务调度 为swarm集群提供HTTP API 可以创建只有 ...

  7. 【电脑】VirtualBox 安装 Win98 写网页

    VirtualBox 安装 Win98 写网页 记录一下,我成功在VirtualBox中安装了Win98系统,并且安装了Dreamweaver 3.0写网页. 零.起因 学校机房的极域电子教室软件不太 ...

  8. Oracle 归档模式

    sqlplus / as sysdba # 以下操作在`sqlplus`中执行 查看日志模式 SQL> archive log list; 数据库日志模式 非存档模式 自动存档 禁用 存档终点 ...

  9. Springboot+MongoDB添加数据时会自带_class字段

    _class字段作用 帮助映射子类,为了方便处理Pojo中存在继承的情况,增加系统的扩展性 去除_class字段 新增mongodb的配置类,配置mappingMongoConverter,配置类网上 ...

  10. MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?

    在MySQL中,DATETIME和TIMESTAMP都是用于存储日期和时间的类型,但它们有一些关键的区别: 1. 存储方式和范围 DATETIME: 存储的日期和时间值是以"年-月-日 时: ...