Python RabbitMQ消息分发轮询
1.收消息:一对多,默认依次轮询的发给每个消费端。
2.消息确认:默认RabbitMQ不会设置no_ack=Ture,意思是,当生产者给消费者发送发送消息时,消费者处理这个消息,处理完后会手动确认发送ACK确认给服务端。
3.如果生产端没有收到确认,这个消息就会一直轮询给每个消费端,直到生产端收到ack确认,在会把队列中的这条消息删除。
#_*_coding:utf-8_*_
__author__ = 'Alex Li'
import pika,time # 实例话创建socket
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost')) # 声明一个管道/在管道内发消息
channel = connection.channel() # 为什么再次声明queue名字:如果消费者先运行了,没有声明queue就会报错
# 如果想要防止报错发生,就要定义queue。
#
# 管道内,声明一个队列,queue=queue的名字
channel.queue_declare(queue='hello') #回调函数
# ch 管道内存对象地址
# method 消息发给哪个queue
# body = 消息内容
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
time.sleep(10) # 消费消息
# callback 如果收到消息,就调用callback函数来处理消息
# queue 管道内的队列名字
# no_ack = True 这条消息出没处理完都不会给服务端发确认
channel.basic_consume(
callback,
queue='hello',) print(' [*] Waiting for messages. To exit press CTRL+C') # 启动后一直运行,没有数据会等待..
channel.start_consuming()
#_*_coding:utf-8_*_
__author__ = 'Alex Li'
import pika,time # 实例话创建socket
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost')) # 声明一个管道/在管道内发消息
channel = connection.channel() # 为什么再次声明queue名字:如果消费者先运行了,没有声明queue就会报错
# 如果想要防止报错发生,就要定义queue。
#
# 管道内,声明一个队列,queue=queue的名字
channel.queue_declare(queue='hello') # 回调函数
# ch 管道内存对象地址
# method 消息发给哪个queue
# body = 消息内容
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
time.sleep(10)
# 消息处理完后会向生产端发送确认指令
ch.basic_ack(delivery_tag=method.delivery_tag) # 消费消息
# callback 如果收到消息,就调用callback函数来处理消息
# queue 管道内的队列名字
# no_ack = True 这条消息出没处理完都不会给服务端发确认
channel.basic_consume(
callback,
queue='hello',) print(' [*] Waiting for messages. To exit press CTRL+C') # 启动后一直运行,没有数据会等待..
channel.start_consuming()
Python RabbitMQ消息分发轮询的更多相关文章
- RabbitMQ消息分发轮询
一,前言 如果我们一个生产者,对应多个消费者,rabbitmq 会发生什么呢 二,消息分发轮询 前提条件:1个生产者 ----> 多个消费者,且no_ack=True (启动三次生产者) ① ...
- RabbitMQ消息分发轮询和Message Acknowledgment
一.消息分发 RabbitMQ中的消息都只能存储在Queue中,生产者(下图中的P)生产消息并最终投递到Queue中,消费者(下图中的C)可以从Queue中获取消息并消费. 多个消费者可以订阅同一个Q ...
- Python RabbitMQ消息队列
python内的队列queue 线程 queue:不同线程交互,不能夸进程 进程 queue:只能用于父进程与子进程,或者同一父进程下的多个子进程,进行交互 注:不同的两个独立进程是不能交互的. ...
- Python RabbitMQ消息持久化
RabbitMQ消息持久化:就是将队列中的消息永久的存放在队列中. 处理方案: # 在实例化时加入durable=True来确认消息的实例化,客户端服务端都要写 channel.queue_dec ...
- Python RabbitMQ 消息队列
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...
- python RabbitMQ队列/redis
RabbitMQ队列 rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或 ...
- RabbitMQ基本示例,轮询机制,no_ack作用
一.RabbitMQ简介: ''' RabbitMQ就是消息队列 之前不是学了Queue了吗,都是队列还学RabbitMQ干嘛? 干的事情是一样的 Python的Queue有两个, 一个线程Queue ...
- python学习之-- RabbitMQ 消息队列
记录:异步网络框架:twisted学习参考:www.cnblogs.com/alex3714/articles/5248247.html RabbitMQ 模块 <消息队列> 先说明:py ...
- RabbitMQ基本用法、消息分发模式、消息持久化、广播模式
RabbitMQ基本用法 进程queue用于同一父进程创建的子进程间的通信 而RabbitMQ可以在不同父进程间通信(例如在word和QQ间通信) 示例代码 生产端(发送) import pika c ...
随机推荐
- vscode编辑器自动生成.vue文件
1.选择“文件 -> 首选项 -> 用户代码片段”,此时,会弹出一个搜索框,输入vue 选择vue后,编辑器会自动打开一个名字为vue.json的文件 2.复制以下内容到这个文件中: { ...
- javascript--面试题
(1)javaScript怎么清空数组? 如 var arrayList = ['a','b','c','d','e','f']; 怎么清空 arrayList 方法1:直接改变arrayList所指 ...
- 26、jQuery
一. jQuery简介 (一) jQuery是什么: 是一个javascript代码仓库 是一个快速的简洁的javascript框架,可以简化查询DOM对象.处理事件.制作动画.处理Ajax交互过程. ...
- STL next_permutation 算法原理和自行实现
目标 STL中的next_permutation 函数和 prev_permutation 两个函数提供了对于一个特定排列P,求出其后一个排列P+1和前一个排列P-1的功能. 这里我们以next_pe ...
- CF1B Spreadsheets
题意翻译 人们常用的电子表格软件(比如: Excel)采用如下所述的坐标系统: 第一列被标为A,第二列为B,以此类推,第26列为Z.接下来为由两个字母构成的列号: 第27列为AA,第28列为AB... ...
- position inherit 定位
inherit 继承父元素 定位 举例 : <div class="father"> <p></p> </div> div{ ...
- 每个JavaScript程序员都需要知道的5个数组方法
Array.forEach() .forEach() 方法能够方便的让你 遍历数组里的每个元素,你可以在回调函数里对每个元素进行操作..forEach()方法没有返回值,你不需要在回调函数里写retu ...
- PHP(层叠样式表,写法分类),选择器的种类)
表单元素的取值怎么取 对应的属性值都有哪些? <span> 标签被用来组合文档中的行内元素. 注释:span 没有固定的格式表现.当对它应用样式时,它才会产生视觉上的变化. style ...
- 根据Excel模板,填写报表,并下载到web浏览器端
package com.neusoft.nda.basic.recordmanager.viewelec.servlet; import java.io.File; import java.io.Fi ...
- ERP项目实施记录10
好久没有更新,因为进度一直拖着.已经实施了20个月了,很多东西没有开发出来.原因多方面的,虽然在此打算吐槽一下开发公司,但其实很大部分责任还是在我们自己. 不多说了,看图: