`
lijiejava
  • 浏览: 262351 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

RabbitMQ基础学习02(工作队列)

 
阅读更多
1. 主要概念:生产者  队列  消费者
2. 虽然Message通过RabbitMQ在不同的App之间传递,但是Message始终只能存储在队列中


[url]http://www.rabbitmq.com/tutorials/tutorial-two-python.html [/url]


Work queues [ Task queues ]


Themain idea behind Work Queues (aka: Task Queues)is to avoid doing a resource-intensive task immediately and having to wait forit to complete. Instead we schedule the task to be done later. We encapsulate a task asa message and send it to the queue. A worker process running in the backgroundwill pop the tasks and eventually execute the job. When you run many workersthe tasks will be shared between them.

Thisconcept is especially useful in web applications where it's impossible tohandle a complex task during a short HTTP request window.


在处理大并发的任务时,我们通常会有多个线程同时执行任务(多个C),所以我们需要RabbitMQ根据相应的规则把队列中的任务推送到不同的C。

假设P发送了10条消息,3个C同时接收



round-robin   dispatching

轮询分发:这种分发机制,RabbitMQ会把消息平均分发给不同的C 


message   acknowledgment

消息确认:消息确认主要是为了防止消息丢失。RabbitMQ在把消息发送给C之后就会把消息删除掉,但是如果此时某个C被kill或者出现其它问题,就会导致消息丢失。加入消息确认机制之后,RabbitMQ只有在收到C返回的确认消息之后才会把消息删除,如果某个C的链接断掉,那么RabbitMQ会把发送给这个C的消息分发给其它的C。注意:这里没有时间限制,如果一个C很长时间没有返回确认消息,RabbitMQ仍然不会把这个消息分发给其它C,只有在某个C的链接断开之后,才会重新分发。 


message   durability

消息持久化:消息确认机制可以保证在某个C出问题时,消息不会丢失。但是如果RabbitMQ服务器在运行中出现问题,那么消息同样会丢失。为了确保在服务器出问题时消息不丢失,我们需要进行2个操作:1. 声明队列持久化 2.声明消息持久化 


fair   dispatch

公平分发:公平分发是为了处理以下场景:假设有2个C在同时处理任务,RabbitMQ采用轮询分发的机制向不同的C分发任务,但是分发到A的任务都需要大量时间来处理,而分发到B的任务可以瞬间处理,那么就会导致A一直在处理而B一直处于空闲中,这是明显不合理的。

In order to defeat that we can use the basic.qos method withthe prefetch_count=1 setting. Thistells RabbitMQ not to give more than one message to a worker at a time. Or, inother words, don't dispatch a new message to a worker until it has processedand acknowledged the previous one. Instead, it will dispatch it to the nextworker that is not still busy. 

公平分发的原理是一次只给C一个任务来处理,等一个任务处理完成之后再分发另外一个任务。
分享到:
评论

相关推荐

    RabbitMQ 高效部署分布式消息队列.zip

    总的来说,《RabbitMQ实战:高效部署分布式消息队列》这本书涵盖了从基础概念到高级特性的全面内容,旨在帮助开发者深入理解RabbitMQ,提升在分布式系统中使用消息队列的能力。通过学习和实践书中的内容,可以有效地...

    RabbitMQ高效部署分布式消息队列实战篇

    总之,《RabbitMQ高效部署分布式消息队列实战篇》是一份全面且实用的指南,它不仅讲解了RabbitMQ的基础知识,还提供了丰富的实战经验,对于想要在分布式环境中运用消息队列的开发者来说,无疑是一份宝贵的参考资料。...

    RabbitMQ实战 高效部署分布式消息队列 带目录 高清版 PDF

    总之,《RabbitMQ实战:高效部署分布式消息队列》是一本全面且实用的指南,它将引导读者从基础到进阶,全面掌握RabbitMQ的使用技巧,实现高效、稳定的分布式消息传递。通过学习本书,开发者不仅能提升自身的技术能力...

    RabbitMQ实战 高效部署分布式消息队列 PDF下载

    5. **RabbitMQ工作流程**:生产者创建一个信道,发布消息到交换器,交换器根据绑定规则将消息路由到一个或多个队列,消费者可以从队列中接收消息并处理。 6. **高可用性**:RabbitMQ支持集群模式,允许多个节点组成...

    rabbitmq基础+springboot集成rabbitmq

    **RabbitMQ基础** RabbitMQ是一个开源的消息代理和队列服务器,用于在分布式系统中进行消息传递。它是基于AMQP(Advanced Message Queuing Protocol)协议实现的,提供了高可用性、可扩展性和稳定性。RabbitMQ的...

    rabbitMQ 消息队列 Demo

    这个例子帮助我们理解RabbitMQ的基本工作流程:生产者创建消息,将消息发送到交换机,交换机根据绑定规则将消息放入队列,最后消费者从队列中接收并处理消息。 2. **02WorkQueues(任务队列)** 在这个示例中,多...

    rabbitmq学习笔记和软件和插件

    “尚硅谷”的学习笔记提供了关于RabbitMQ的详细教程,涵盖了基础概念、安装配置、实战案例等多个方面,是初学者入门的好资料。此外,官方文档也是深入理解RabbitMQ功能和特性的关键资源,包括了详细的API参考、插件...

    RabbitMQ实战 高效部署分布式消息队列

    一、RabbitMQ基础 RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol)协议的消息队列服务器,由Erlang语言开发,具备高可用性、稳定性和可扩展性。它的核心概念包括生产者(Producer)、消费者...

    SpringBoot整合RabbitMQ基础学习Exchange源码

    RabbitMQ是一款开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中的消息传递。SpringBoot是基于Spring框架的轻量级开发工具,它简化了配置和启动过程,...

    RabbitMQ实战:高效部署分布式消息队列

    总之,《RabbitMQ实战:高效部署分布式消息队列》全面覆盖了从基础理论到实战技巧的各个层面,是学习和精通RabbitMQ的宝贵资源。通过学习,读者不仅可以掌握RabbitMQ的使用,还能理解其背后的设计理念,为构建高效、...

    RabbitMQ实战:高效部署分布式消息队列 pdf版

    **RabbitMQ实战:高效部署分布式消息队列** ...通过本教程的学习,读者将能够熟练掌握RabbitMQ的核心概念、部署策略以及在实际项目中的应用,从而实现高效的消息队列管理,提升系统性能和稳定性。

    RabbitMQ一个第三方队列组件

    队列是RabbitMQ的基础,它可以缓存消息,保证消息的顺序处理,并且在消费者不可用时保存消息,直到消费者恢复。此外,RabbitMQ还提供了交换器(Exchanges)的概念,它决定了消息如何路由到队列。根据业务需求,可以...

    RabbitMQ实战 高效部署分布式消息队列.pdf

    1. **RabbitMQ基础概念** - **消息队列**:消息队列是一种存储和转发消息的中间件,它可以缓解系统间的通信压力,实现异步处理。 - **RabbitMQ工作原理**:生产者发送消息到交换器,交换器根据预定义的路由规则将...

    rabbitmq学习笔记.zip

    RabbitMQ是一个开源的消息...总的来说,这个“rabbitmq学习笔记.zip”文件应该为初学者提供了一个全面了解和掌握RabbitMQ的资源,从基础概念到实践操作,再到高级特性和最佳实践,帮助读者建立起对RabbitMQ的深入理解。

    rabbitMQ学习资料

    RabbitMQ的工作流程主要包括生产者(Producer)、交换器(Exchange)、队列(Queue)和消费者(Consumer)四个关键组件: 1. **生产者**:是发送消息的应用程序。生产者将消息发布到RabbitMQ服务器,而不直接发送给...

    rabbitmq实战学习-rabbitmqlearning.zip

    一、RabbitMQ基础 1. 消息队列:RabbitMQ基于AMQP(Advanced Message Queuing Protocol)协议,提供消息队列服务,使得应用程序可以异步处理任务,提高系统响应速度和并发能力。 2. 工作模型:RabbitMQ支持多种...

    RabbitMQ实战 高效部署分布式消息队列(高清带标签)

    首先,RabbitMQ的基础概念是理解其工作原理的关键。RabbitMQ基于AMQP(Advanced Message Queuing Protocol)协议,这是一个开放标准,定义了消息的格式和交换模型。通过创建、连接和断开信道,发送者和接收者可以...

    RabbitMQ学习简单demo项目源码

    【RabbitMQ学习简单demo项目源码】是一个用于学习RabbitMQ基础概念和使用方法的实战项目。这个项目包含了RabbitMQ的各种模式示例,对于希望通过实践来掌握RabbitMQ的人来说是一个很好的起点。 RabbitMQ是基于AMQP...

    RabbitMq有关学习资料

    4. **工作队列**:演示如何使用RabbitMQ构建工作队列,处理后台任务,如批量数据处理或图片缩略图生成。 5. **死信队列**:解释死信队列的概念,以及如何配置和利用它来处理无法正常路由或消费的消息。 6. **...

Global site tag (gtag.js) - Google Analytics