RabbitMQ

django+celery+redis

谁都会走 提交于 2020-04-28 05:43:58
1.1 Celery介绍   参考博客: http://www.cnblogs.com/alex3714/p/6351797.html   参考博客: https://www.jianshu.com/p/027538ffb8c1   1、celery应用举例       1、Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,           如果你的业务场景中需要用到异步任务,就可以考虑使用celery       2、你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,         你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情       3、Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis   2、Celery有以下优点       1、简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的       2、高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务       3、快速:一个单进程的celery每分钟可处理上百万个任务       4、灵活:

项目部署Django+celery+redis

一笑奈何 提交于 2020-04-28 05:43:38
celery介绍 1、celery应用举例  1、Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,    如果你的业务场景中需要用到异步任务,就可以考虑使用celery  2、你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,    你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情  3、Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis 2、Celery有以下优点  1、简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的  2、高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务  3、快速:一个单进程的celery每分钟可处理上百万个任务  4、灵活: 几乎celery的各个组件都可以被扩展及自定制 3、Celery基本工作流程图             user: 用户程序,用于告知celery去执行一个任务。      broker: 存放任务(依赖RabbitMQ或Redis,进行存储)      worker: 执行任务 4、Celery 特性  1

Django 学习之Celery(芹菜)

六月ゝ 毕业季﹏ 提交于 2020-04-28 05:08:34
Celery 介绍 文档:http://docs.celeryproject.org/en/latest/index.html Celery 是一个功能完备,即插即用的异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务的执行。 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收的工作任务,这个功能依赖于消息队列(RabbitMQ, Redis等) Celery 特点 简单,易于使用和维护,有丰富的文档 高效,单个Celery 进程 每分钟可以处理数百万个任务 灵活,Celery 种几乎每个部分都可以自定义扩展 Celery 非常易于集成到一些Web开发框架中 Celery角色 Celery clinet: 这是任务生产者,它负责将任务(tasks)发送到broker中 Broker:b roker 负责将任务分发给响应的Celery worker Celery worker: 这是任务的执行者,完成相应的业务逻辑,在具体实现上体现为Python 函数 实现过程 Celery 通过消息进行通信,通常使用一个叫broker(中间人)来协作client(任务的发出者)和worker(任务的处理者),client 发出消息到队列中,broker将队列中的消息发给worker 来处理

RabbitMQ几个常用面试题

梦想与她 提交于 2020-04-28 04:37:28
原文来自: https://www.cnblogs.com/woadmin/p/10537174.html 1、什么是RabbitMQ?为什么使用RabbitMQ? 答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件; 可以用它来:解耦、异步、削峰。 2、RabbitMQ有什么优缺点? 答:优点:解耦、异步、削峰; 缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低; 增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。 3、如何保证RabbitMQ的高可用? 答:没有哪个项目会只用一搭建一台RabbitMQ服务器提供服务,风险太大; 4、如何保证RabbitMQ不被重复消费? 答:先说为什么会重复消费:正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除; 但是因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将消息分发给其他的消费者。 针对以上问题,一个解决思路是:保证消息的唯一性,就算是多次传输

SpringBoot企业常用的starter

百般思念 提交于 2020-04-28 03:46:34
[TOC] SpringBoot企业常用的starter Editor:SimpleWu SpringBoot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。 Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 在下面的代码中只要有一定基础会发现这写代码实例非常简单对于开发者来说几乎是“零配置”。 SpringBoot运行 开发工具:jdk8,IDEA,STS,eclipse(需要安装STS插件)这些都支持快速启动SpringBoot工程。我这里就不快速启动了,使用maven工程。学习任何一项技术首先就要精通HelloWord,那我们来跑个初体验。

celery在Django中的应用

笑着哭i 提交于 2020-04-28 02:59:38
这里不解释celery,如果不清楚可以参考下面链接: http://docs.celeryproject.org/en/latest/getting-started/introduction.html 这里来演示一下在Django项目中如何使用celery: 1. 首先我们需要使用到两个库,用pip安装:   pip install celery   pip install django -celery 2. 在celery建议使用rabbitmq作为消息代理,当然也支持redis作代理,abbitmq提供的队列和消息持久化机制确实更加稳定,所以对于追求稳定性的任务更适合适配rabbitmq作为中间件, 这里用rabbitmq作为消息代理,用redis作为存储后端   我的环境是deepin,安装rabbitmq和redis   sudo apt-get install rabbitmq- server   sudo apt -gei install redis 3. 在django中使用celery的方式和普通py文件中的方式略有不同,下面是一个向通过秒滴平台发送短信验证码的demo: 普通py文件用法: # tasks.py import os from celery import Celery app = Celery( ' tasks ' , backend= ' amqp

【RabbitMQ】2、心得总结,资料汇总

ⅰ亾dé卋堺 提交于 2020-04-27 22:31:25
Spring AMQP中文文档 http://ju.outofmemory.cn/entry/320538 云栖社区 https://yq.aliyun.com/search?q=rabbitmq&type=ARTICLE RabbitMQ-JAVA常见报错信息 , https://yq.aliyun.com/articles/175024 CentOS7环境下安装RabbitMQ, http://t.cn/RCtrQey RabbitMQ-Java版本生产与消费, http://t.cn/RCtd249 RabbitMQ:四种ExChange用法, http://t.cn/RCxR801 RabbitMQ之TTL(Time-To-Live 过期时间) RabbitMQ之死信队列 RabbitMQ之队列优先级 (优先级队列,队列的未被消费的消息,按照优先级高级先后被消费) RabbitMQ如何实现延迟队列? CSDN 消息中间件(Kafka/RabbitMQ)收录集 高可用集群 http://www.nongziyi.xin/?p=227 https://blog.csdn.net/woogeyu/article/details/51119101 https://www.linuxidc.com/Linux/2017-10/147708.htm?hmsr=toutiao.io

Spring cloud stream【入门介绍】

风格不统一 提交于 2020-04-27 22:31:08
案例代码: https://github.com/q279583842q/springcloud-e-book   在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,而以往使用了哪个中间件比如RabbitMQ,那么该中间件和系统的耦合性就会非常高,如果我们要替换为Kafka那么变动会比较大,这时我们可以使用SpringCloudStream来整合我们的消息中间件,来降低系统和中间件的耦合性。 一、什么是SpringCloudStream   官方定义 Spring Cloud Stream 是一个构建<font color='red'>消息驱动</font>微服务的框架。   应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中 binder 交互,通过我们配置来 binding ,而 Spring Cloud Stream 的 binder 负责与消息中间件交互。所以,我们只需要搞清楚如何与 Spring Cloud Stream 交互就可以方便使用消息驱动的方式。   通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。目前仅支持 RabbitMQ

【RabbitMQ】ubuntu下RabbitMQ安装与简单使用

99封情书 提交于 2020-04-27 21:49:40
参考链接: 1、安装: https://blog.csdn.net/a295277302/article/details/71246941 https://blog.csdn.net/junzhen_chen/article/details/78459383 2、使用: https://blog.csdn.net/hzw19920329/article/details/53156015 https://blog.csdn.net/u014308482/article/details/53994401 环境信息: OS:ubuntu16.04 前期准备: 1、ifconfig、ping命令查看网络是否正常 2、配置源(即软件下载地址) 安装(安装包方式可以参考参考链接中的1链接): 1、由于rabbitMq使用erlang语言开发,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang 2、查看erlang版本: sudo erl 3、安装rabbitMq: sudo apt-get install rabbitmq-server 4、要查看服务器状态 sudo rabbitmq 5、安装插件 sudo rabbitmq-plugins enable rabbitmq_manageme 安装完成后系统默认启动。 添加用户

.net Core使用RabbitMQ

陌路散爱 提交于 2020-04-27 21:49:25
1. 消息队列的使用场景主要有三种 削峰 异步 解耦 3.windows下的安装 安装erlang http://erlang.org/download/otp_win64_21.1.exe 配置erlang环境变量 此电脑-->鼠标右键“属性”-->高级系统设置-->环境变量-->“新建”系统环境变量 变量名:ERLANG_HOME 变量值:C:\Program Files\erl10.1 然后双击系统变量path点击“新建”,将 %ERLANG_HOME%\bin 加入到path中。 最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。 安装rabbitmq http://www.rabbitmq.com/install-windows.html 设置环境变量RABBITMQ_SERVER=C:\Program Files\rabbitmq_server-x.x.x。 添加到PATH %RABBITMQ_SERVER%\sbin; cmd输入rabbitmq-service查看安装是否成功 安装RabbitMQ-Plugins 切换到RabbitMQ的sbin目录 cd /d C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.8\sbin 执行命令:rabbitmq-plugins