erlang

深入了解RabbitMQ工作原理及简单使用

旧巷老猫 提交于 2020-11-22 03:26:16
深入了解RabbitMQ工作原理及简单使用 转自:https://www.cnblogs.com/vipstone/p/9275256.html RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍与实践 RabbitMQ事务和Confirm发送方消息确认——深入解读 使用Docker部署RabbitMQ集群 你不知道的RabbitMQ集群架构全解 RabbitMQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。 RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。 使用场景 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中,而不是像几年前一样页面卡死或报错给用户。 像这种排队结算就用到了消息队列机制,放入通道里面一个一个结算处理,而不是某个时间断突然涌入大批量的查询新增把数据库给搞宕机,所以RabbitMQ本质上起到的作用就是削峰填谷,为业务保驾护航。 为什么选择RabbitMQ 现在的市面上有很多MQ可以选择,比如ActiveMQ、ZeroMQ

Amqp与RabbitMQ使用

匆匆过客 提交于 2020-11-21 12:25:05
pom: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 配置: spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.username = guest spring.rabbitmq.password =guest Main类,启动rabbitmq注释。 @EnableRabbit public class DemoApplication {} 监控类Service,必须@EnableRabbit与@RabbitListener一起使用。 才可以有其他写法,也可以指定监控配置等,官网有写法说明: https://docs.spring.io/spring-amqp/docs/2.0.2.RELEASE/api/org/springframework/amqp/rabbit/annotation/EnableRabbit.html @Service public class BookService { @RabbitListener(queues = "cw.news" ) public void receive(Book book){ System

深入理解:一文讲透RabbitMQ

浪尽此生 提交于 2020-11-14 01:34:09
点击蓝色“ 黎杜编程 ”关注我哟 加个“ 星标 ”,每天上午 09:25,干货推送! 关于RabbitMQ 出身:诞生于金融行业的消息队列 语言:Erlang 协议:AMQP(Advanced Message Queuing Protocol 高级消息队列协议) 关键词:内存队列,高可用,一条消息 队列结构 Producer/Consumer:生产者消费者 Exchange:交换器,可以理解为队列的路由逻辑,交换器主要有三种,图中是Direct交换器 Queue:队列 Binding:绑定关系,实际是交换器上映射队列的规则 发送和消费一条消息 在上图的模式下,交换器的类型为Direct,伪代码表示消息的生产和消费 消息生产 #消息发送方法 #messageBody 消息体 #exchangeName 交换器名称 #routingKey 路由键 publishMsg(messageBody,exchangeName,routingKey){ ...... } #消息发送 publishMsg( "This is a warning log" , "exchange" , "log.warning" ); RoutingKey=log.warning,和队列A与交换器的绑定一致,所以消息被路由到了队列A上。 消息消费 对于消息消费而言,消费者直接指定要消费的队列即可

SringCloud通过RabbitMQ实现Zipkin持久化到Mysql8

拥有回忆 提交于 2020-11-13 01:16:14
​ ​ 上一篇 通过自己搭建zipkin的方式实现分布式链路跟踪,但没有将请求服务的链路信息存储到数据库,以下通过RabbitMQ实现Zipkin持久化到Mysql8。使用zipkin 2版本提供了 jar包启动应用。 Java 8及以上版本 Spring Cloud Hoxton.SR8 RabbitMQ 3.8.9 Erlang 23.1.1 zipkin-server-2.22.2 Mysql8 一、搭建Zipkin Server ​ mac中安装 RabbitMQ ​ 1. 安装Erlang,执行brew install erlang命令。 ​ 2. 安装RabbitMQ Server,执行 brew install rabbitmq命令。 ​ 进入目录/usr/local/sbin,执行rabbitmq-server,访问RabbitMQ http://localhost:15672 #guest guest ​ 创建一个名为 zipkin 的数据库,从Github下载 zipkin 的 sql语句 ,导入数据库。 ​ 下载zipkin-server包 ,执行如下指令启动zipkin应用。 java -jar zipkin-server-2.22.2-exec.jar --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL

RabbitMQ安装笔记

☆樱花仙子☆ 提交于 2020-11-08 13:33:52
前言 项目中某些场景考虑到高并发情况,调研后决定使用RabbitMQ,本来以为很简单,没想到配置环境花费了好多时间,按照网上的方法来,总是有其他问题需要继续查找,特记录此笔记,方便下次部署安装。 本笔记只记录安装过程,不探讨RabbitMQ技术。 准备 使用RabbitMQ,除了要安装RabbitMQ外,还必须安装Erlang,由于RabbitMQ使用Erlang语言编写,所以必须先安装Erlang语言运行环境。 1.Erlang下载: http://www.erlang.org/downloads 2.RabbitMQ下载: http://www.rabbitmq.com/ 另外先提一下,Erlang和RabbitMQ安装好需要添加到系统的环境变量中,因为这个花费了我一些时间。 Erlang安装 1.安装 下载完Erlang之后,打开安装包后,一步步安装完成,这里没什么需要注意的地方。 2.设置环境变量 找到Erlang的安装路径打开到bin文件夹下,注意此路径。‘ 右键我的电脑,选择属性,找到高级系统设置,点开后选择高级里的环境变量。 找到系统变量中的Path,点击编辑 新建环境变量,添加路径,可以直接复制打开的Erlang的bin路径。 3.检查Erlang是否安装成功 打开cmd,输入 erl 后回车,如果能显示版本信息,表明安装成功。 RabbitMQ安装 1

该如何选择消息队列?

↘锁芯ラ 提交于 2020-11-08 05:31:53
在高并发业务场景下,消息队列在流量削峰、解耦上有不可替代的作用。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、Pulsar 等。 消息队列这么多,到底该选择哪款消息队列呢? 选择消息队列的基本标准 虽然这些消息队列在功能和特性方面各有优劣,但我们在选择的时候要有一个基本标准。 首先,必须是开源的产品。开源意味着,如果有一天你使用的消息队列遇到了一个影响你系统业务的 Bug,至少还有机会通过修改源代码来迅速修复或规避这个 Bug,解决你的系统的问题,而不是等待开发者发布的下一个版本来解决。 其次,这个产品必须是近年来比较流行并且有一定社区活跃度的产品。流行的好处是,只要使用场景不太冷门,遇到 Bug 的概率会非常低,因为大部分遇到的 Bug,其他人早就遇到并且修复了。在使用过程中遇到的一些问题,也比较容易在网上搜索到类似的问题,然后很快的找到解决方案。还有一个优势就是,流行的产品与周边生态系统会有一个比较好的集成和兼容。 最后,作为一款及格的消息队列,必须具备的几个特性包括: 消息的可靠传递:确保不丢消息; Cluster:支持集群,确保不会因为某个节点宕机导致服务不可用,当然也不能丢消息; 性能:具备足够好的性能,能满足绝大多数场景的性能要求。 接下来看一下有哪些符合上面这些条件,可供选择的开源消息队列。 RabbitMQ

初识中间件Kafka

泪湿孤枕 提交于 2020-11-04 00:04:41
初识中间件Kafka Author:SimplelWu 什么是消息中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件 关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统。 什么是Kafka? Kafka是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的、分区的、可靠的分布式日志存储服务。它通过一种独一无二的设计提供了一个消息系统的功能。 kafka官方: http://kafka.apache.org/ Kafka作为一个分布式的流平台,这到底意味着什么? 我们认为,一个流处理平台具有三个关键能力: 发布和订阅消息(流),在这方面,它类似于一个消息队列或企业消息系统。 以 容错 的方式存储消息(流)。 在消息流发生时处理它们。 什么是kakfa的优势? 它应用于2大类应用: 构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。 构建实时流的应用程序,对数据流进行转换或反应。 kafka有四个核心API 应用程序使用 Producer API 发布消息到1个或多个topic(主题)。 应用程序使用 Consumer API 来订阅一个或多个topic,并处理产生的消息。 应用程序使用 Streams API 充当一个流处理器,从1个或多个topic消费输入流

干货!消息队列RabbitMQ入门教程

南笙酒味 提交于 2020-11-01 23:36:19
​ 写在前面:全文12000多 字,从为什么需要用消息队列,到rabbitMQ安装使用,如何使用 JavaAPI生产消费消息,以及使用消息队列带来的一些常见问题。绝对很适合新手入门学习。 为什么需要消息队列 异步处理 削峰限流 秒杀活动,一般会因为流量过大,导致应用挂掉。加入消息队列可控制活动人数,缓解短时间的高流量。 应用解耦 双十一购物节,订单系统需要通知库存系统,传统做法是订单系统直接调用库存系统的接口,库存系统出现故障时订单就会失败。可在订单系统和库存系统中间加一个MQ,达到应用解耦的需求。 A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... 日志处理 消息队列有哪些 Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点? 特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,比 RocketMQ、Kafka 低一个数量级 同 ActiveMQ 10 万级,支撑高吞吐 10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景 topic 数量对吞吐量的影响 topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的

软件-MQ-RabbitMQ:RabbitMQ

♀尐吖头ヾ 提交于 2020-10-29 11:13:30
ylbtech-软件-MQ-RabbitMQ:RabbitMQ RabbitMQ是实现了 高级消息队列协议(AMQP) 的 开源消息代理软件 (亦称 面向消息的中间件 )。RabbitMQ服务器是用 Erlang 语言编写的,而集群和故障转移是构建在 开放电信平台 框架上的。所有主要的编程语言均有与代理接口通讯的客户端 库 。 1. 返回顶部 1、 中文名:消息队列 外文名:Message Queue 简 称:MQ 释 义:一种程序对程序的通信方法 目录 1 简介 2 历史 3 基本概念 4 主要特性 5 安装 6 参见 2、 2. 返回顶部 1、 简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用 Erlang 语言编写的,而群集和故障转移是构建在 开放电信平台 框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 历史 Rabbit科技有限公司开发了RabbitMQ,并提供对其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合资企业,2010年4月被 VMware 旗下的SpringSource收购。RabbitMQ在2013年5月成为GoPivotal的一部分。 基本概念 RabbitMQ是一套 开源(MPL) 的消息队列服务软件,是由 LShift

RabbitMQ

隐身守侯 提交于 2020-10-29 04:28:26
#RabbitMQ集群搭建 ##1. rabbitMQ简介 ###1.1 RabbitMQ的特点 MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品 ###1.2 使用场景 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。 ###1.3 含义 RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议 ###1.4 基本概念 RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难 ###1.5 重点概念说明 | Broker | 简单来说就是消息队列服务器实体。| | :--: | :--: | | Exchange | 消息交换机,它指定消息按什么规则,路由到哪个队列。 | | Queue | 消息队列载体,每个消息都会被投入到一个或多个队列。 | | Binding | 绑定