RabbitMq +Celery(一)

本文是一系列关于RabbitMQ和Celery的教程,旨在帮助读者理解如何使用两者进行分布式异步任务调度。内容涵盖RabbitMQ的组件、消息确认、持久化、RPC以及相关API的基本概念。
摘要由CSDN通过智能技术生成

本文共三篇,看完之后,使用RabbitMq + Celery进行日常业务是没问题的。

一、背景介绍

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量,目前项目中一直在用RabbitMq + Celery进行分布式异步调度任务,最近抽出时间从头整理一下。

二、RabbitMq简介

首先,我们看下RabbitMq的发展史

RabbitMq由三部分组成:交换器,绑定,队列。

如下图

下面我们看一下关于先关概念:

1、RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
2、MQ:消息队列(Message Queue),应用程序A可以给应用程序B发送消息,能够有效解耦,支持高并发,支持异步操作等等。
3、AMQP:Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
4、生产者:消息的生产者,将消息发送到MQ
5、消费者:消息的消费者,从MQ接收消息并进行处理
6、Exchange:交换器,将生产者的消息根据规则路由到不同的队列以便不同的消费者拿到对应的消息。
7、RabbitMQ常用的Exchange Type有三种:fanout、direct、topic。
fanout:把所有发送到该Exchange的消息投递到所有与它绑定的队列中,广播。

direct:把消息投递到那些binding key与routing key完全匹配的队列中。

topic:将消息路由到binding key与routing key模式匹配的队列中。


1.RabbitMQ支持消息确认,RabbitMQ收到消息回执(Message acknowledgment)后才将该消息从Queue中移除;如果RabbitMQ没有收到回执并检测到消费者的RabbitMQ连接断开,则RabbitMQ会将该消息发送给其他消费者(如果存在多个消费者&#x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值