amqp

2020版中间件面试题总结(RabbitMQ+Kafka+ZooKeeper)

随声附和 提交于 2020-11-08 22:25:59
RabbitMQ 1. RabbitMQ的使用场景有哪些? 抢购活动,削峰填谷,防止系统崩塌。 延迟信息处理,比如10分钟之后给下单未付款的用户发送邮件提醒。解耦系统,对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用户返积分的功能,这个时候不用在业务代码里添加新增积分的功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后面再添加任何功能只需要订阅对应的消息队列即可。 2. RabbitMQ有哪些重要的角色? RabbitMQ中重要的角色有:生产者、消费者和代理: [图片上传失败...(image-40f1e0-1604821335945)] 生产者:消息的创建者,负责创建和推送数据到消息服务器; 消费者:消息的接收方,用于处理数据和确认消息; 代理:就是RabbitMQ本身,用于扮演“快递”的角色,本身不生产消息,只是扮演“快递”的角色。 3. RabbitMQ有哪些重要的组件? ConnectionFactory(连接管理器):应用程序与Rabbit之间建立连接的管理器,程序代码中使用。 Channel(信道):消息推送使用的通道。 Exchange(交换器):用于接受、分配消息。 Queue(队列):用于存储生产者的消息。 RoutingKey(路由键):用于把生成者的数据分配到交换器上。 BindingKey(绑定键):用于把交换器的消息绑定到队列上。

rabbitMQ笔记

懵懂的女人 提交于 2020-11-08 15:36:09
六种工作模式 官网介绍:https://www.rabbitmq.com/getstarted.html 简单模式:一个生产者,一个消费者 work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一。 订阅模式:一个生产者发送的消息会被多个消费者获取。 路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key topic模式:将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“ *”只匹配一个词。 简单模式/work模式 Channel channel = rabbitTemplate.getConnectionFactory().createConnection().createChannel( false ); channel.queueDeclare("yangsimple", false , false , false , null ); channel.basicPublish( "", "yangsimple", null , "simple message" .getBytes()); System.out.println( "basic publish" ); channel.close(); 订阅模式/路由模式 // 生产者 Connection connection =

初识中间件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 的一大优势,在同等机器下,可以支撑大量的

ActiveMQ集群

一个人想着一个人 提交于 2020-10-30 08:54:46
1 ActiveMQ消息集群    1.1 集群方式     客户端集群:让多个消费者消费同一个队列     Broker Clusters:多个Broker之间同步消息,实现负载均衡,但是没有高可用     Master Slave:实现高可用,但是没有负载均衡   1.2 客户端集群配置     ActiveMQ失效转移(failover):允许当其中一台消息服务器宕机时,客户端在传输层上重新连接到其它消息服务器,语法为:failover:(uri1,...,uriN)?transportOptions       transportOptions参数说明:       randomize默认为ture,表示在URI列表中使用URI连接时是否采用随机策略       initialReconnectDelay默认为10,单位毫秒,表示第一次重新连接的等待时间       maxReconnectDelay默认为3000,单位毫秒,表示最长重新连接的等待时间   1.3 Broker Cluster集群配置     NetworkConnector(网络连接器):主要用于配置ActiveMQ服务器与服务器之间的网络通讯方式,用于服务器透传消息;分为动态连接器和静态连接器     静态连接器如:       <networkConnectors>         

rabbitmq学习(一):AMQP协议,AMQP与rabbitmq的关系

三世轮回 提交于 2020-10-30 07:49:46
前言 当学习完AMQP的基本概念后,可以到 http://tryrabbitmq.com/ 中利用rabbitmq模拟器进行消息的模拟发送和接收 一、什么是AMQP,AMQP与rabbitmq的关系   AMQP(Advanced Message Queue Protocol 高级消息队列协议):是一个网络协议,它支持符合条件的客户端和消息代理中间件(message middleware broker)进行通讯。   rabbitmq是AMQP协议的实现者,所以amqp中的概念和准则也适用于rabbitmq。 二、AMQP基本组成及基本概念 1.组成   AMQP的基本组成如下图所示,该模型同样适用于rabbitmq。   基于下图消息的流向:生产者(publisher/producer)生产具有指定路由键(routing key)的消息将其发布给消息代理(broker 即rabbitmq)中的交换机(exchange),交换机将消息中的路由键与队列(queue)绑定信息(binding)中存储的路由键对比,将消息路由到匹配的队列中。队列再将信息通过连接(connection)中的通道(channel)推送给订阅了消息的消费者(consumer)。    2.基本概念   a.生产者(Publisher/Producer):生产者顾名思义就是生产消息的角色

软件-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 | 绑定

谈谈消息队列的流派

谁都会走 提交于 2020-10-28 01:39:20
关于 MQ 的定义 Message Queue ( MQ )消息队列中间件,通常我们在网上看到的对其定义是将消息的发送和接受分离来实现应用程序的异步和解耦,给人的直觉是 MQ 是异步的,用来解耦的。但这个只是 MQ 的效果,而不是目的。 MQ 真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层上更加简单的通讯协议。 一套分布式系统中两个模块之间通讯要么是 HTTP ,要么是 TCP ,但这两种协议其实都是原始的协议。前者实现通讯就必须要做到各客户端都有 WebServer ,而且不支持长连接;后者就更加原始了 — 粘包、心跳、私有的协议。 而 MQ 所要做就是在基于这些现有的协议之上构建一个更简单的通讯(生产者/消费者)模型。它定义了两个对象 —发送数据的叫生产者,接受数据的叫消费者,提供一个 SDK 给我们自己定义生产者和消费者实现消息通讯,且无视底层通讯协议。 带 Broker 的流派 这个流派通常有一台服务器作为 Broker ,所有的消息都通过它进行中转。生产者把消息发送给它就结束自己的任务了,最后 Broker 则把消息主动推送给消费者(或者消费者主动轮询)。 重 Topic 的 MQ Kafka 、 Active MQ 就属于这个流派:生产者发送 key 和数据到 Broker ,由 Broker 比较 key 之后决定给哪个消费者。 在这种模式下,

RabbitMQ迁移消息队列AMQP

心已入冬 提交于 2020-10-15 05:41:39
云栖号最佳实践:【 点击查看更多上云最佳实践 】 这里有丰富的企业上云最佳实践,从典型场景入门,提供一系列项目实践方案,降低企业上云门槛的同时满足您的需求! 场景描述 本文Step by Step介绍了如何将阿里云自建RabbitMQ迁移到消息队列AMQP。同时本文可以作为线下IDC自建RabbitMQ等场景迁移到消息队列AMQP的参考手册。 解决问题 如何将RabbitMQ迁移消息队列AMQP。 产品列表 消息队列AMQP版 云监控 RA访问控制RAM 直达最佳实践 》》 来源: oschina 链接: https://my.oschina.net/u/4302200/blog/4330922