rabbitMQ消息队列1
rabbitmq 消息队列
解耦 异步
优点:解决排队问题
缺点: 不能保证任务被及时的执行
应用场景:去哪儿,
同步
优点:保证任务被及时的执行
缺点:排队问题 大并发
Web nginx 10000-20000
apache 1000-2000
pv= page visit = 上yi =10server web cluster集群 uv = user visit qps = 队列的作用
1. 存储消息、数据
2. 保证消息顺序
3. 保证数据的交付 为什么用rabbitmq instead of python queue
是因为python queue 不能跨进程 #acknowledgment 消息不丢失
#no-ack = False,如果消费者遇到情况(its channel is closed, connection is closed, or TCP connection is lost)挂掉了,
#那么,RabbitMQ会重新将该任务添加到队列中
#2、durable 消息不丢失 不能在已声明的队列中添加 而是需要重新定义
#3、消息获取顺序
#默认消息队列里的数据是按照顺序被消费者拿走,例如:消费者1 去队列中获取 奇数 序列的任务,消费者1去队列中获取 偶数 序列的任务。
#channel.basic_qos(prefetch_count=1) 表示谁来谁取,不再按照奇偶数排列
#4、发布订阅
#发布订阅和简单的消息队列区别在于,发布订阅会将消息发送给所有的订阅者,而消息队列中的数据被消费一次便消失。所以,
#RabbitMQ实现发布和订阅时,会为每一个订阅者创建一个队列,而发布者发布消息时,会将消息放置在所有相关队列中。
#exchange type = fanout
#5、关键字发送
# exchange type = direct
#之前事例,发送消息时明确指定某个队列并向其中发送消息,RabbitMQ还支持根据关键字发送,
#即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange,exchange根据 关键字 判定应该将数据发送至指定队列。
#6、模糊匹配
#exchange type = topic
#在topic类型下,可以让队列绑定几个模糊的关键字,之后发送者将数据发送到exchange,exchange将传入”路由值“和 ”关键字“进行匹配,匹配成功,则将数据发送到指定队列。
## 表示可以匹配 0 个 或 多个 单词
#* 表示只能匹配 一个 单词 #当Consumer关闭连接时,这个queue要被deleted。可以加个exclusive的参数
#channel.queue_declare(exclusive=True)
生产者
1. 端口,ip,认证信息
2. 创建一个队列
3. 往队列里发消息
消费者
1. 端口,ip,认证信息
2. 从指定队列里取消息 确保消息被消费完毕
1. 生产者端发消息时,加参数
properties=pika.BasicProperties(
delivery_mode=2, # make message persistent
), 2. 消费者端,消息处理完毕时,发送确认包
ch.basic_ack(delivery_tag=method.delivery_tag) channel.basic_consume(callback, #取到消息后,调用callback 函数
queue='task1',)
#no_ack=True) #消息处理后,不向rabbit-server确认消息已消费完毕 durable = True , 保证队列持久化 1)最大 Delivery Tag
#传递标记是一个64位长的值,因此其最大值为9223372036854775807。
#由于Delivery Tag唯一标识每个通道的每次投递,所以,发送者或客户端在实践中不太可能超过此值。 消息的公平分发
消费者端
channel.basic_qos(prefetch_count=1) 消息订阅发布 exchange type
fanout = 广播
direct = 组播
topic = 规则播
header =
直连交换机(direct),
主题交换机(topic),
(头交换机)headers
扇型交换机(fanout)
rpc
rabbitMQ消息队列1的更多相关文章
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...
- RabbitMQ消息队列1: Detailed Introduction 详细介绍
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...
- (转)RabbitMQ消息队列(九):Publisher的消息确认机制
在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...
- (转)RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...
- (转)RabbitMQ消息队列(六):使用主题进行消息分发
在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...
- (转)RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)
上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...
- RabbitMQ消息队列应用
RabbitMQ消息队列应用 消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是 ...
- RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)
上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...
- RabbitMQ消息队列(九):Publisher的消息确认机制
在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...
- 使用EasyNetQ组件操作RabbitMQ消息队列服务
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...
随机推荐
- iOS UIWebView 中 js调用OC 打开相册 获取图片, OC调用js 将图片加载到html上
线上html <!DOCTYPE html> <html> <head> <title>HTML中用JS调用OC方法</title> < ...
- 每天一个linux命令(性能、优化):【转载】top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新 ...
- hadoop下远程调试方法
JPDA 简介Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用 ...
- LintCode题解
JAVA代码:https://github.com/tw1996/LintCode 持续更新
- pipeline的存储代码
在spider中最后一个函数返回item时会scrapy会调用pipeline里面的 process_item(self, item, spider):函数并传入item,spider等参数在这里可以 ...
- sublime python运行插件
Tools->New plugin 粘贴下面代码,在插件目录新建文件夹,保存 import sublime, sublime_plugin import os class ExampleComm ...
- ft,dtft,dft的关系(转载)
很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ...
- decorator and @property
@property 首先, 它是个装饰器. 其次, 看到这个东西, 意味着它下面的函数可以被当作一个属性(成员变量)来看到. 通常, 这个函数会return点什么东西. 重点讲讲装饰器: 1, py ...
- VS2010单元测试入门实践教程
单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...
- python+anaconda+pycharm工具包安装
更新额外包 $ conda update conda 更新pip python -m pip install --upgrade pip 更新所有 conda update --all 安装ffmpe ...