RabbIT

Spring Boot(十四)RabbitMQ延迟队列

守給你的承諾、 提交于 2019-12-01 15:12:14
一、前言 延迟队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单;2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;3.过1分钟给新注册会员的用户,发送注册邮件等。 实现延迟队列的方式有两种: 通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能; 使用rabbitmq-delayed-message-exchange插件实现延迟功能; 注意: 延迟插件rabbitmq-delayed-message-exchange是在RabbitMQ 3.5.7及以上的版本才支持的,依赖Erlang/OPT 18.0及以上运行环境。 由于使用死信交换器相对曲折,本文重点介绍第二种方式,使用rabbitmq-delayed-message-exchange插件完成延迟队列的功能。 二、安装延迟插件 1.1 下载插件 打开官网下载: http://www.rabbitmq.com/community-plugins.html 选择相应的对应的版本“3.7.x”点击下载。 注意: 下载的是.zip的安装包,下载完之后需要手动解压。 1.2 安装插件 拷贝插件到Docker: docker cp D:\rabbitmq_delayed_message_exchange-20171201-3.7.x.ez rabbit:/plugins

rabbitmq单机多实例集群搭建

耗尽温柔 提交于 2019-12-01 08:46:29
1.安装单机版的 2.要搭建集群,先将之前单机版中历史记录干掉,删除rabbitmq /var/lib/rabbitmq/mnesia下的所有内容。 3.启动3个实例 #因为我配置了web管理插件,所以还要指定其web插件占用的端口号,如果不指定,将不能启动多个节点,因为端口号被占用 RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENAME=rabbit rabbitmq-server -detached RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached 4

Docker:安装部署RabbitMQ

天大地大妈咪最大 提交于 2019-12-01 01:44:15
前言 今天原本想讲解 SpringBoot集成RabbitMQ 的,临近开始写时才发现家里的电脑根本没有安装 RabbitMQ 呀。这下只好利用已有的阿里云服务器,直接 Docker 安装一下了,顺道记录下,算是个积累。 关于Docker 关于 Docker ,百度百科是这么说的:Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。总的来说,你可以在它上面搭载不一样的应用和环境,而且安装也很简单。关于dockerk的安装,本章节就不阐述了,谷歌或者百度下,安装很简单,之后有计划在写吧,毕竟在刚开始接触 docker 时,还是碰见一些坑的。 安装部署RabbitMQ 拉取RabbitMQ镜像文件,这里加上了 management ,表明是带web管理界面的,便于管理。 docker pull rabbitmq:management 题外话 :大家搜索镜像文件时,可直接到 Docker 的商店搜索,地址为: https://hub.docker.com/ , RabbiMQ 的相关镜像为: https://hub.docker.com/_/rabbitmq/ ,查看

SpringBoot整合RabbitMQ消息队列-学习笔记

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 23:54:37
SpringBoot整合RabbitMQ消息队列-学习笔记 2018年08月30日 14:50:50 Calon Mo 阅读数 3672 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/kevinmcy/article/details/82221297 前言 本篇文章主要用于记录个人学习RabbitMQ的过程,记录下来方便日后查看,如有错误的地方,还望指正。 本篇文章比较详细地记录本人在学习过程中的每一个步骤,比较适合对RabbitMQ不熟的同学学习,跟着本文操作一遍,就可以大概知道RabbitMQ的基础知识了。 准备阶段 首先把RabbitMQ环境安装好,下面再详细介绍RabbitMQ各个知识点和如何使用。 由于是基于Centos7的操作系统安装RabbitMQ-3.7.7。 为了方便操作,先把防火墙干掉,生产环境当然不能这么干,个人学习随意,以下是相关命令: centos7关闭并禁止防火墙启动命令: systemctl stop firewalld systemctl disable firewalld RabbitMQ安装 这里介绍一种比较简单的安装方法-依赖安装,不用单独安装erlang等依赖。 首先到RabbitMQ官网下载:http://www

Rabbitmq集群(单机多实例)

若如初见. 提交于 2019-11-30 03:35:22
Rabbitmq集群 Distributed Rabbitmq brokers的实现方式有三种,分别是clustering、federation、shovel。本节围绕clustering(集群)讲述。 搭建rabbitmq集群要求: 可靠的网络环境; 集群中所有机器的Rabbitmq和Erlang版本要一样。 Rabbitmq_Clustering工作模式: Virtual hosts, exchanges, users和permissions会自动镜像到集群的所有节点; queues可以只配置在一个节点或者镜像到多个节点; 客户端连接到集群的任何一个节点都能看到所有的queues。 搭建Rabbitmq集群 搭建Rabbitmq集群的方法有很多种,参考 Ways of Forming a Cluster ,在此作者使用env variables来搭建集群。 Rabbitmq是通过ip和port来为客户端提供服务的,所以配置Rabbitmq实例的基本要求就是绑定ip:port(默认为localhost:5672),如果单机部署过mysql、Redis等工具,想必这个原理很好理解了。如果不理解请继续看示例: 单机启动多个实例 # 启动第一个节点 $ RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server

聊聊sprng cloud优雅安全下线微服务节点

孤街醉人 提交于 2019-11-29 18:21:19
spring cloud 在国内应该兴起于2015年,当时业界还面临着是doubbo还是spring cloud 的争论。实践是检验真理的唯一标准,目前doubbo应该只能生活在遗留项目之中。 spring cloud是什么已经高频面试题。本文不准备回答这么高大上的问题,只简单探讨一下spring cloud业务节点下线的问题。 节点非安全下线可能导致的问题 一般来说在生产环境不会无理由的offline一个节点,其场景通常中异常宕机,部署发布,本次主要从灰度发布这个场景来理解非安全下线的隐患。其主要特征是数据不一致及业务中断。 下线服务手段及优缺点 可手段 优点 缺点 kill 快,Shutdown hook 除了快都是缺点 /shutdown 和方式一类似 和方式一类似 /service-registry/down(推荐) 标记eureka状态down 只能控制服务发现流量 /pause 标记eureka状态down 开启helthcheck后冲突 只能控制eureka流量 delete /eureka/apps/{ application.name }/ 心里安慰 Eureka客户续约后状态变更为up DiscoveryManager.getInstance(). shutdownComponent(); 支持手写下线接口 shutdown之后如果想start就比较困难

Windows 下安装RabbitMQ服务器及基本配置

亡梦爱人 提交于 2019-11-29 08:53:53
RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 装RabbitMQ服务器必须首先安装 Erlang 运行环境。 安装Erlang 安装Erlang 时要注意安装的RabbityMQ 所依赖的Erlang版本,根据RabbitMQ的要求选择一个版本,这里我要安装的RabbitMQ的版本是 3.7.7 ,他依赖的Erlang版本范围是 19.3.6.4 到 21.0.x, 因此我选择版本是 OTP 20.3 . Erlang 下载地址 。下载Erlang安装包后直接安装就可以了。 设置ERLANG_HOME 环境变量 我这里是默认安装所以Erlang的安装路径在: C:\Program Files\erl9.3\bin\erl.exe 点击确定在系统环境变量里就增加刚刚添加的ERLANG_HOME 注意:如果之前安装了Erlang的其他版本,需要卸载后在进行重新安装和设置。 在开始菜单查找Erlang,点击启动 打开如下界面,那么Erlang就安装成功了。接下来就安装RabbitMQ。 安装RabbitMQ 可以在RabbitMQ的官方网站下载最新版本的RabbitMQ服务器安装程序,

springCloud-7.安装RabbitMQ

北城以北 提交于 2019-11-28 12:19:41
简介 使用docker安装RabbitMQ 首先你得有docker,MAC直接现在pkg安装即可,下载地址:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/beta/Docker.dmg 镜像加速 鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com 在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。 终端执行:docker info 查看是否修成功 1.开始用docker安装RabbitMQ 执行:docker search rabbitmq 2.下载并启动默认guest 用户,密码也是 guest docker run -d --hostname my-rabbit --name rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.7.3-management 参数解释: 15672 :表示 RabbitMQ 控制台端口号

我的RabbitMQ的学习成果

旧城冷巷雨未停 提交于 2019-11-27 07:04:05
背景 在研发分布式事务的最终一致性事务模式时,使用了RabbitMQ。 在这之前也接触过RabbitMQ,但没有特别深入的去了解它的特性与原理。这次决定系统的学习一次,所以业余时间阅读大神们的书籍和博客,学习到了很多RabbitMQ的特性与细节。 在学习的过程中,我使用Spring提供的Rabbit客户端 —— RabbitTemplate,在SpringBoot架构下,将这些特性基本使用了一遍,并记录在了博客中。 源码地址为: https://github.com/XuePeng87/rabbitmq-example 目录 一、RabbitMQ的HelloWorld 二、AMQ协议的简单理解 三、RabbitMQ如何实现AMQ协议(读书笔记) 四、RabbitMQ3.7在CentOS7下的安装(单节点) 五、RabbitMQ的消息属性(读书笔记) 六、发布消息到RabbitMQ与性能权衡(读书笔记与个人实践) 七、消费消息与性能权衡(读数笔记与个人实践) 八、RabbitMQ的集群原理 九、RabbitMQ的集群安装 十、使用HAProxy为RabbitMQ做负载均衡 十一、使用KeepAlived为RabbitMQ的高可用的负载均衡 内容参考 《RabbitMQ实战》 —— 作者: Alvaro Videla / Jason J. W. Williams 《深入RabbitMQ

Docker安装部署RabbitMQ、PHP安装扩展AMQP及测试

主宰稳场 提交于 2019-11-26 20:08:08
一、使用Docker安装部署RabbitMQ 1、docker search rabbitmq:management 2、docker pull rabbitmq:management 注:如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq. 3、创建rabbitmq容器的shell脚本(创建容器、启动服务、添加admin用户) #/bin/sh docker run --name rabbitmq --publish 5671:5671 --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 -dit rabbitmq:management /bin/bash \ && docker exec -d rabbitmq /bin/bash -c "rabbitmq-server --detached" && echo "starting..." \ && docker exec -d rabbitmq /bin/bash -c "sleep 10s; rabbitmqctl add_user admin