(一)安装一个消息中间件,如:rabbitMQ

(二)生产者

sendmq.py

import pika

import sys

import time

# 远程rabbitmq服务的配置信息

username = 'admin' # 指定远程rabbitmq的用户名密码

pwd = 'admin'

ip_addr = '10.1.7.7'

port_num = 5672

# 消息队列服务的连接和队列的创建

credentials = pika.PlainCredentials(username, pwd)

connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))

channel = connection.channel()

# 创建一个名为balance的队列,对queue进行durable持久化设为True(持久化第一步)

channel.queue_declare(queue='balance', durable=True)

message_str = 'Hello World!'

for i in range(100000000):

# n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.

channel.basic_publish(

exchange='',

routing_key='balance', # 写明将消息发送给队列balance

body=message_str, # 要发送的消息

properties=pika.BasicProperties(delivery_mode=2, ) # 设置消息持久化(持久化第二步),将要发送的消息的属性标记为2,表示该消息要持久化

) # 向消息队列发送一条消息

print(" [%s] Sent 'Hello World!'" % i)

# time.sleep(0.2)

connection.close() # 关闭消息队列服务的连接

运行sendmq.py文件,可以从以下方法查看队列中的消息数量。

一是,rabbitmq的管理界面,如下图所示:

二是,从服务器端命令查看

rabbitmqctl list_queues

(三)消费者

receivemq.py

import pika

import sys

import time

# 远程rabbitmq服务的配置信息

username = 'admin' # 指定远程rabbitmq的用户名密码

pwd = 'admin'

ip_addr = '10.1.7.7'

port_num = 5672

credentials = pika.PlainCredentials(username, pwd)

connection = pika.BlockingConnection(pika.ConnectionParameters(ip_addr, port_num, '/', credentials))

channel = connection.channel()

# 消费成功的回调函数

def callback(ch, method, properties, body):

print(" [%s] Received %r" % (time.time(), body))

# time.sleep(0.2)

# 开始依次消费balance队列中的消息

channel.basic_consume(queue='balance', on_message_callback=callback, auto_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')

channel.start_consuming() # 启动消费

运行receivemq.py文件,可以从以下方法查看队列中的消息数量。

或者

rabbitmqctl list_queues

延伸:

systemctl status rabbitmq-server.service # 状态

systemctl restart rabbitmq-server.service # 重启

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python总线 rabbitmq_Python rabbitMQ如何实现生产消费者模式相关推荐

  1. RabbitMQ下的生产消费者模式与订阅发布模式

    所谓模式,就是在某种场景下,一类问题及其解决方案的总结归纳.生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式,用于功能解耦和分布式系统间的消息通信,以下面两种场景为例: 数据接入    假 ...

  2. redis实例python_生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  3. android经典的消费生产模式,生产消费者模式与Handler

    Processor类需要有两个功能,一个是返回当前的地理信息,另一个功能是对信息进行处理加工后返回信息.所以,我们提供一个IProcess接口 public interface IProcessor ...

  4. java生成者消费者模式,java生产消费者模式

    package productiveConsumption2; /* * 面包类 */ public class Bread { private int id; private String name ...

  5. python总线 rabbitmq_python - 操作RabbitMQ

    介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应 ...

  6. python 多线程并发编程(生产者、消费者模式),边读图像,边处理图像,处理完后保存图像实现提高处理效率

    文章目录 需求 实现 先导入本次需要用到的包 一些辅助函数 如下函数是得到指定后缀的文件 如下的函数一个是读图像,一个是把RGB转成BGR 下面是主要的几个处理函数 在上面几个函数构建对应的处理函数 ...

  7. 生产消费者模式 之 实现一个积分系统

    首先从需求开始分析:  1.积分系统要有任务(做任务赚积分) 要有规则(每条任务对应什么规则 或者对应多个规则  每条规则 对应的积分) 2.开始设计数据库: 主要的表有(资源表,规则表) 思想(当系 ...

  8. 生产消费者模式实例(多线程实现价格监控)

    主线程 创建多个线程,实现生产数据 package com.megacloud.amazon.business.job;import java.sql.Connection; import java. ...

  9. 设计模式笔记之六:生产消费者模式

    http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235958&idx=1&sn=ba8d7093bac7f67 ...

最新文章

  1. hdu 2156 分数矩阵
  2. 性能测试之手机号码python生成方式
  3. 局域网配置NTP服务器
  4. 转:mybatis - 分页功能
  5. 如何判断强化学习训练是否在收敛?
  6. 创新实训个人记录:P versus NP
  7. (网页)Uncaught ReferenceError: pageImport is not defined
  8. efcore调用函数_.net core EF Core调用存储过程的方式
  9. el table 固定表头和首行_el-table表头根据内容自适应,解决表头错位和固定列错位(完美解决)...
  10. [机器学习]正则化方法 -- Regularization
  11. 【转】HTML - embed 与 object 之争
  12. python3 ftp.mlsd,python3中的ftp目录
  13. MySQL 创建索引
  14. mysql 创建函数_MySQL文件及目录权限设置分析-爱可生
  15. java高并发日志_高并发下log4j的性能瓶颈
  16. 今天没事做了个MBTI职业倾向测试
  17. Ural 1001 Reverse Root 解题报告
  18. ofo 回应假装老外秒退押金;董明珠雷军十亿赌约到期;高通苹果摩擦再升级 | 极客头条...
  19. 用计算机软件绘制思维导图和手绘思维导图,手绘思维导图与计算机思维导图的对比...
  20. jmter测试jmeter参数化(必须掌握)

热门文章

  1. android 自定义按钮实现 home键 和返回键
  2. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(六) MiniGUI 提供的非 GUI/GDI 接口...
  3. nurbs非均匀有理B样条实现船体重建
  4. linux下-exec和xargs的区别
  5. caffe学习(三):caffe开发环境安装(Ubuntu)
  6. MySQL python update 语句
  7. (1110, “Column ‘arriveTime‘ specified twice“)
  8. jackson 驼峰注解_jackson - jackson annotations注解详解
  9. 服务端统一时间戳 boost::date_time UTC
  10. linux kernel 中mdelay() 与msleep()的区别