RabbIT

花了3天总结的RabbitMQ实用技巧

微笑、不失礼 提交于 2020-08-08 17:58:27
以前看过的关于RabbitMQ核心消息模式的文章都是基于Java API的,最近看了下官方文档,发现这些核心消息模式都可以通过Spring AMQP来实现。于是总结了下RabbitMQ的实用技巧,包括RabbitMQ在Windows和Linux下的安装、5种核心消息模式的Spring AMQP实现,相信对于想要学习和回顾RabbitMQ的朋友都会有所帮助。 简介 RabbitMQ是最受欢迎的开源消息中间件之一,在全球范围内被广泛应用。RabbitMQ是轻量级且易于部署的,能支持多种消息协议。RabbitMQ可以部署在分布式系统中,以满足大规模、高可用的要求。 相关概念 我们先来了解下RabbitMQ中的相关概念,这里以5种消息模式中的路由模式为例。 安装及配置 接下来我们介绍下RabbitMQ的安装和配置,提供Windows和Linux两种安装方式。 Windows下的安装 安装Erlang,下载地址:http://erlang.org/download/otp_win64_21.3.exe 安装RabbitMQ,下载地址:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/rabbitmq-server-3.7.14.exe 安装完成后,进入RabbitMQ安装目录下的sbin目录;

springboot整合rabbitmq合集(xml方式和注解方式)

百般思念 提交于 2020-08-07 06:47:20
首先介绍一下rabbitmq三种模式 Direct–路由模式 任何发送到Direct Exchange的消息都会被转发到RouteKey指定的Queue。 这种模式下不需要将Exchange进行任何绑定(binding)操作。 消息传递时需要一个“RouteKey”,可以简单的理解为要发送到的队列名字。 如果vhost中不存在RouteKey中指定的队列名,则该消息会被抛弃。 Fanout–发布/订阅模式 任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上。 这种模式不需要RouteKey。 这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定。 如果接受到消息的Exchange没有与任何Queue绑定,则消息会被抛弃。 Topic–匹配订阅模式 任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上。 就是每个队列都有其关心的主题,所有的消息都带有一个“标题”(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的队列。 这种模式需要RouteKey,也许要提前绑定Exchange与Queue。 在进行绑定时

MQ系列(1)——rabbitMQ简介

泪湿孤枕 提交于 2020-08-04 23:58:59
前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件。rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一个程序员)。 rabbitMQ 的结构和的角色 学习rabbtMQ我们先要弄清楚这几个概念: exchange , queue , routing-key , binding-key , message , publisher , exchange , binding-key , Connection , Channel , consumer , broker ;下面对这些角色概念进行介绍。 消息的发送方被称作 publisher (生产者),而消息的接收方被称作 consumer (消费者),而消息队列服务器实体就是 broker (指 rabbitMQ );消费者或者生产者对rabbitMQ的一个连接被称作 Connection (连接),在rabbit的连接模型中,为了提高连接传输效率,采用了 Channel (管道)这种方式实现多路复用,类似于Nio中的模型;我们知道建立一个TCP连接代价很大,因此TCP连接建立后最好不要断开 Connection - Channel 连接模型就是为了达到这种目的;一个消费者(生产者)使用一个 channel 消费(发送)消息,而多个

深入浅出 RabbitMQ

孤者浪人 提交于 2020-07-28 17:20:06
什么是 RabbitMQ 简介(优点) 基于 ErLang 语言开发有高可用高并发的优点,适合集群。 开源、稳定、易用、跨平台、支持多种语言、文档齐全。 有消息确认机制和持久化机制,可靠性高。 概念 生产者和消费者 Producer :消息的生产者 Consumer :消息的消费者 Queue 消息队列提供了 FIFO 的处理机制,具有缓存消息的能力。在 RabbitMQ 中,队列消息可以设置为持久化,临时或者自动删除。 如果是持久化的队列, Queue 中的消息会在 Server 本地硬盘存储一份,防止系统 Crash 数据丢失。 如果是临时的队列, Queue 中的数据在系统重启之后就会丢失。 如实是自动删除的队列,当不存在用户连接到 Server ,队列中的数据会被自动删除。 ExChange ExChange 类似于数据通信网络中的交换机,提供消息路由策略。 在 RabbitMQ 中,生产者不是将消息直接发送给 Queue ,而是先发送给 ExChange , ExChange 根据生产者传递的 key 按照特定的路由算法将消息给指定的 Queue 。一个 ExChange 可以绑定多个 Queue 。和 Queue 一样, ExChange 也可以设置为持久化、临时或者自动删除。 Binding 所谓绑定就是将一个特定的 ExChange 和一个特定的 Queue

openstack安装配置—— compute node配置

╄→гoц情女王★ 提交于 2020-07-28 10:49:27
计算节点需要配置的主要是nova和neutron的客户端,控制节点在进行资源调度及配置时需要计算节点配合方能实现的,计算节点配置内容相对较少,实际生产环境中,需要配置的计算节点数量相当庞大,那么我们就需要借助ansible或者puppet这样的自动化工具进行了, 废话不多讲,直接进入配置状态。 compute节点基础配置 [root@compute1 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 8 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 44 Model name: Westmere E56xx/L56xx/X56xx (Nehalem-C) Stepping: 1 CPU MHz: 2400.084 BogoMIPS: 4800.16 Virtualization: VT-x Hypervisor vendor: KVM Virtualization type: full L1d cache:

java RabbitMQ面试题附pdf答案(最全版本持续更新)

放肆的年华 提交于 2020-05-09 20:26:25
前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf. 1、什么是 rabbitmq 采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦. 2、为什么要使用 rabbitmq 1、在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2、拥有持久化的机制,进程消息,队列中的信息也可以保存下来。 3、实现消费者和生产者之间的解耦。 4、对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作。 5.可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。 3、使用 rabbitmq 的场景 1、服务间异步通信 2、顺序消费 3、定时任务 4、请求削峰 4、如何确保消息正确地发送至 RabbitMQ? 如何确保消息接. 收方消费了消息? 发送方确认模式 将信道设置成 confirm 模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的 ID。一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一 ID)。 如果 RabbitMQ

SpringBoot进阶教程(五十)集成RabbitMQ---MQ实战演练

ε祈祈猫儿з 提交于 2020-05-08 21:07:07
RabbitMQ是一个在 AMQP 基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License 开源协议 。RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息. 如果你还没有安装rabbitmq的,可以看看这篇 《centos安装MQ》 不说了不说了,来一张图直截了当的看看MQ工作的具体过程: 开局一张图 故事全靠编.从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息队列,并且当消息队列收到消息之后,接收消息队列传来的消息,并且给予相应的处理.消息队列常用于分布式系统之间互相信息的传递. v 基础概念 对于RabbitMQ来说,除了这三个基本模块以外,还添加了一个模块,即交换机(Exchange).它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列.那么RabitMQ的工作流程如下所示: 关于rabbitmq几个基础名词的介绍: Broker: 简单来说就是消息队列服务器实体。 Exchange: 消息交换机

rpcx客户端调用服务端超时的技术细节

微笑、不失礼 提交于 2020-05-08 16:27:47
0x1 微服务 服务之间的调用超时设置是很重要的,有时候某个服务因为某些原因响应缓慢,或不可用的时候,这时为了保证调用方的服务正常,超时设置就很有必要。我们来看看rpcx的调用服务超时的技术细节是如何的。 0x2 客户端代码 func main() { d := client.NewConsulDiscovery(*basePath, "Echo", []string{*consulAddr}, nil) option := client.DefaultOption // 设置了响应服务端的超时时间为5秒 option.ReadTimeout = 5 * time.Second xclient := client.NewXClient("Echo", client.Failtry, client.RandomSelect, d, option) defer xclient.Close() args := &Args{ Name: "Rabbit", } reply := &Reply{} err = xclient.Call(ctx, "Say", args, reply) if err != nil { log.Fatalf("调用失败: %v", err) } log.Printf("%s\n", reply.Greet) } 这段代码表示,当客户端调用Echo服务的时候

spring boot rabbitMQ 的 hello world

前提是你 提交于 2020-05-08 03:09:39
  今天公司有一个需求,是实现多个服务器中的运维信息的集中管理。由于需要实现运维信息的收集不影响各服务器上服务的开销,并且能快速开发,所以选择了消息队列这种技术方式。 消息队列有一个好处,是可以将消息异步传递,不对主服务造成开销,运维信息,是可以异步的在运维服务器中处理,并不影响到主服务。 现在java中,使用spring boot开发,方便高效,所以,选择了spring boot支持的rabbit MQ。 搞开发,学技术,最好的方式是从最简单的例子出发,就是常说的hello world,所以有了以下实现最简单例子的笔记. 一,安装 rabbitMQ 服务   由于rabbitMQ需要Erlang的虑拟机,所以需要先安装Erlang,安装完Erlang,再安装rabbitMQ 服务,两个服务都是安装在windows server 2106上面 二,开始进行编码 打开start.spring.io, 新建一个hello world 项目   2. 将项目导入 Eclipse,以下是代码结构      3. RabbitAmqpTutorialsApplication.java package org.springframework.amqp; import org.springframework.boot.CommandLineRunner; import org

CentOS RabbitMQ 高可用(Mirrored)

有些话、适合烂在心里 提交于 2020-05-04 02:33:43
原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html 一、RabbitMQ 单节点 1.1、Windows 版安装配置 1.1.1 安装Erlang环境 下载地址: http://www.erlang.org/downloads 文件: http://erlang.org/download/otp_win64_20.3.exe 安装: 一直下一步安装结束! 1.1.2 安装RabbitMQ 默认安装: https://www.rabbitmq.com/install-windows.html 文件: https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5.exe 安装:一直下一步安装结束! 1.1.3 配置管理插件 A.开始菜单出搜索rabbitmq,打开RabbitMQ Command Prompt命令行 B.启动管理插件 https://www.rabbitmq.com/rabbitmq-plugins.8.html C.访问RabbitMQ管理地址: http://127.0.0.1 :15672,默认密码:guest/guest 1.1.4 开启关闭服务 1.2、Linux CE 版 (centos7 )