RabbitMQ

19.python笔记之Rabbitmq

偶尔善良 提交于 2020-02-13 15:31:06
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。 RabbitMQ安装 1.linux 安装配置epel源 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安装erlang $ yum -y install erlang 安装RabbitMQ $ yum -y install rabbitmq-server service rabbitmq-server start/stop 2.安装python API pip install pika or easy_install pika 先来一个基于Queue实现生产者消费者模型试试水 #!/usr/bin/env python3 #coding:utf8

Java初识RabbitMQ一消费端限流

北城以北 提交于 2020-02-13 01:55:12
Java初识RabbitMQ一消费端限流 为什么要对消费端限流 假设一个场景,首先,我们RabbitMQ服务器上积压了有上万条未处理的消息,我们随便打开一个消费端,巨量的消息就会瞬间全部推送过来,但是我们单个消费端是无法同时处理这么多消息的。 当数据量特别大的时候,我们对生产端限流肯定是不科学的,因为有时候并发量就是特别大,有时候并发量又特别少,我们无法约束生产端,这是用户的行为。所以我们应该对消费端限流,用于保持消费端的稳定,当消息数量激增的时候很有可能造成资源耗尽,以及影响服务的性能,导致系统的卡顿甚至直接崩溃。 怎么实现消费端限流 RabbitMQ给我们提供了 QOS (服务质量保证)功能,即在非自动确认消息的前提下( autoAck 要设置为false ),如果一定数目的消息未被 ack 前,RabbitMQ服务器不会推送新的消息给消费端。 /** * Request specific "quality of service" settings. * * These settings impose limits on the amount of data the server * will deliver to consumers before requiring acknowledgements. * Thus they provide a means of

RabbitMQ拓展

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-13 00:03:28
RabbitMQ拓展 TTL队列/消息 TTL是Time To Live的缩写, 也就是生存时间 RabbitMQ支持消息的过期时间, 在消息发送时可以进行指定 RabbitMQ支持队列的过期时间, 从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除 生产者 import com . rabbitmq . client . Channel ; import com . rabbitmq . client . Connection ; import com . victoria . rabbitmq . util . ConnectionUtils ; import java . io . IOException ; import java . util . concurrent . TimeoutException ; public class send { private static final String EXCHANGE_NAME = "test_exchange_ttl" ; public static void main ( String [ ] args ) throws IOException , TimeoutException { //获取链接 Connection connection = ConnectionUtils .

Spring Boot(七):RabbitMQ 详解

旧时模样 提交于 2020-02-12 12:21:57
一、RabbitMQ简介 RabbitMQ即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 RabbitMQ是实现AMQP(高级消息队列)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层保存这个数据。 AMQP,即advanced message queuing protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠安全。 RabbitMQ是一个开源的AMQP实现,服务器用Erlang语言编写,支持多种客户端,如 Python、Ruby、.NET、Java、JMS

Kafka与RabbitMQ、ActiveMQ协议区别

感情迁移 提交于 2020-02-12 10:05:22
对于Kafka与RabbitMQ、ActiveMQ协议,它们具体的区别如下: activemq: activemq支持主从复制、集群。但是集群功能看起来很弱,只有failover功能,即我连一个失败了,可以切换到其他的broker上。这一点貌似不太科学。假设有三个broker,其中一个上面没有consumer,但另外两个挂了,消息会转到这个上面来,堆积起来。看样子activemq还在升级中。 activemq工作模型比较简单。只有两种模式 queue,topics rabbitmq: rabbitmq用erlang写的。安装完才10m不到,在windows上使用也非常方便,在这点上完爆了activemq,java又臭又长没办法啊。rabbitmq给我感觉更像oracle,功能非常强大。安装完,也有实例的概念,可以像建数据库一样,建实例,建用户划权限。同时监控系统也很好用。这些都是好处,同时也是累赘,整体上来说rabbitmq比activemq复杂太多了 kafka: kafka号称为分布式而生。和activemq以及rabbitmq这些企业级队列而言确实更有分布式系统的优势 kafka的优势在于: 传统的消息队列只有两种模式,要么是queue,要么是publish-subscribe发布订阅。在queue模式中,一组消费者消费一个队列,每条消息被发给其中一个消费者。在publish

Redis + RabbitMQ 解决秒杀高并发,实现异步处理

情到浓时终转凉″ 提交于 2020-02-12 03:44:35
思路 商品秒杀是典型的高并发场景,为了提高性能,减少数据库的访问次数可以把数据加载到redis中,在redis中进行商品的库存减少,而且不会存在线程安全问题,当redis中商品减少成功后,可以把消息推送到rabbitMQ中,实现异步同步到数据库,让数据库按照他自己本身的处理能力到rabbitmq中去取消息. 项目架构 项目架构 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId>

RabbitMQ在Centos7中安装

坚强是说给别人听的谎言 提交于 2020-02-12 02:18:48
1、下载 由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang [root@localhost /]# cd usr/local/src/ [root@localhost src]# pwd /usr/local/src [root@localhost src]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm 执行下面命令升级上步下载的rpm软件包 [root@localhost src]#rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 执行下面命令安装erlang yum -y install erlang 测试Erlang是否安装成功 [root@localhost src]# erl -version Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 8.0.3 2、安装RabbitMQ [root@localhost src]#yum -y install rabbitmq-server-3.6.6-1.el6.noarch.rpm 3、后台运行rabbitmq [root@localhost src

rabbitMQ安装问题记录

一个人想着一个人 提交于 2020-02-11 20:26:19
参考链接: rabbitmq国内镜像地址: https://www.newbe.pro/Mirrors/Mirrors-RabbitMQ/ https://www.zhihu.com/question/30451381 1、通过rabbitmq国内镜像地址下载新版rabbitmq,我下载的是 3.8.2版本(需要Erlang21.3版本以上) 2、打开rabbitmq官网(官网地址: https://www.rabbitmq.com/which-erlang.html )看rabbitmq与Erlang的版本匹配 3、打开Erlang官网( https://www.erlang.org/downloads )获取erlang的下载地址, 目前最新Erlang版本是22.2 在官网点击下载,实在是太太太慢了,都是几B的走,然后发现下面这种方式很可以解决问题 1)复制Erlang下载地址,打开百度云网盘,点击离线下载,粘贴下载链接到输入框内,点击开始下载,秒保存到网盘下 (注意:我下载的时候官网最新版本是22.2但是百度网盘上能下载的最新版本是22.1,不过满足需求) 2)通过百度网盘的下载获取Erlang 3)下载成功Erlang后,管理员身份运行exe文件,一直next进行安装,安装目录可以自行选择 4)安装完Erlang后,双击rabbitmq的exe文件,一路next,安装成功

springboot消息之整合rabbitmq

牧云@^-^@ 提交于 2020-02-11 14:52:57
1、新建一个springboot项目,选择web、rabbitmq 2、rabbitmq相关信息 (1)RabbitAutoConfiguration (2)自动配置了ConnectionFactory (3)RabbitProperties封装了RabbitMQ配置 (4)RabbitTemplate:给RabbitMQ发送和接受消息 (5)AmqAdmin:RabbitMQ系统管理功能组件 3、在application.properties中配置rabbitmq相关 spring.rabbitmq.host=192.168.124.22 spring.rabbitmq.username=guest spring.rabbitmq.password=guest #spring.rabbitmq.virtual-host= 4、在springboot自带的测试文件中进行测试 package com.gong.springbootrabbitmq; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework

【SpringBoot MQ系列教程】RabbitMq 初体验

孤街醉人 提交于 2020-02-10 21:14:53
【SpringBoot MQ系列教程】RabbitMq 初体验 mq 在异步解耦削峰的优势非常突出,现在很多的项目都会用到,掌握 mq 的知识点,了解如何顺畅的使用 mq,可以说是一个必备的职业技能点了 接下来我们进入 rabbitmq 的学习过程 I. 环境准备 在测试之前,需要安装 rabbitmq,下面分别给出 mac + centos 的安装教程 1. mac 安装 安装命令 brew install rabbitmq ## 进入安装目录 cd /usr/local/Cellar/rabbitmq/3.7.5 # 启动 brew services start rabbitmq # 当前窗口启动 rabbitmq-server 启动控制台之前需要先开启插件 ./rabbitmq-plugins enable rabbitmq_management 进入控制台: http://localhost:15672/ 用户名和密码:guest,guest 2. centos 安装 安装命令 yum install erlang wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm yum install rabbitmq-server-3