RabbitMQ

思维导图视频代码揭秘

天大地大妈咪最大 提交于 2020-08-07 03:30:54
思维导图、视频、代码携手揭秘RabbitMQ编程,干货多多,趣味多多! 目录 思维导图 视频 代码 思维导图 视频 链接:https://pan.baidu.com/s/1DDztBeQ1DZqi9Kmeg9cM2A 提取码:hwvx 链接:https://pan.baidu.com/s/1gTNXx_g6VE-BPmRsCt2xYQ 提取码:pwyk 代码 https://gitee.com/cakin24/RabbitMQDemo 来源: oschina 链接: https://my.oschina.net/u/4327913/blog/4288693

golang实现rabbitmq消费者模式 断线重连机制

为君一笑 提交于 2020-08-06 23:38:30
在连接第三方组件的时候实现断线重连机制是很有必要的事情,因为你不知道在啥时候他突然就抽风挂掉了。以rabbitmq为例,在突然面对大流量写入,或者连接数被打满(比如在资讯,直播等模块使用rabbitmq(惨痛的教训))mq就挂掉了,如果你的消费者没有重连机制,你的消费者进程在mq挂掉后,也会自动挂掉。然后等运维修复了mq,但是你的消费者进程却无法再次连接消费了,这就有点恐怖了。要不就写个shell 脚本 ,每隔30S或者1分钟去检测进程活度,挂掉了就重启消费者。当然最简单的还是在消费者的代码里实现断线重连机制。代码如下 package rabbitmq import ( "encoding/json" "fmt" "github.com/streadway/amqp" "time" ) //测试用例 type Obj struct { Item1 string `json:"item1"` Item2 string `json:"item2"` Item3 string `json:"item3"` } func StartAMQPConsume() { defer func() { if err := recover(); err != nil { time.Sleep(3 * time.Second) fmt.Println("休息3秒") StartAMQPConsume()

Java,Spring定时器@Scheuled,后台定时轮询简易方法

╄→尐↘猪︶ㄣ 提交于 2020-08-06 15:32:57
说到轮询,大多数都使用websocket轮询,或亦是redis,rabbitMQ等,业务需求,今日想出一种简易的轮询方法, 记录一下,如有错误,大佬门轻喷。 需求假设: 页面显示今日天气状况,天气是实时改变的,所以每个一小时或者半小时更新。所以需要后台定时执行一次请求获取天气信息,来更新天气情况等等 直接上代码 //省略controller service代码 @Service public class WeatherServiceImpl implements WeatherService{ //先获得天气情况,util封装了天气情况具体请求接口 public static Map data = Util.getWeatherData; //每半个小时执行一次,具体参数写法可自行百度 @scheduled时间参数配置 @Scheduled(cron = "0 0/30 * * * *") public void weatherScheduled(){ data = Util.getWeatherData; } @Override public Map getWeather(){ return data; } } 这样就可简易的获取实时天气数据了。 这便是一个简易的轮询,数据量不大,轮询时间不长可以使用 数据量大,需要实时精准的还是使用消息中间件吧!~ 如有错误,烦请告知并提出修改

HttpRunnerManager学习(三)

核能气质少年 提交于 2020-08-06 11:58:47
好久没来了,今天有时间来分享一下httpRunnerManager后续学习,异步执行、定时任务、发送测试报告。直接上干货。 继httpRunnerManager学习二后,想要 异步执行 要安装rabbitMQ 同样我们下载docker镜像 : #docker pull rabbitmq:3.8.0-management 启动容器: #docker run -d --name rabbitmq3.8 -p 5672:5672 -p 15672:15672 -v $PWD/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3.8.0-management -d 后台运行 --name 指定容器名 -p 指定服务运行的端口(5672:应用访问端口,15672控制台web端口) -v 映射目录或文件 --hostname 主机名 -e指定环境变量:RABBITMQ_DEFAULT_USER 用户名         RABBITMQ_DEFAULT_PASS 密码 启动完毕:可通过http://服务器ip:15672打开,(前提开放访问端口)账号密码启动容器有设置,可登录说明rabbitMQ安装成功。 踩坑

Celery浅谈

半腔热情 提交于 2020-08-06 11:39:26
一、Celery 核心模块 1. Brokers brokers 中文意思为中间人,在这里就是指 任务队列本身 ,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker,Brokers 就是生产者和消费者存放/拿取产品的地方(队列)。Celery 扮演生产者和消费者的角色。 常见的 brokers 有 rabbitmq、redis、Zookeeper 等。推荐用Redis或RabbitMQ实现队列服务。 2. Workers 就是 Celery 中的 工作者 ,执行任务的单元,类似与生产/消费模型中的消费者。它实时监控消息队列,如果有任务就从队列中取出任务并执行它。 3. Backend / Result Stores 用于存储任务的执行结果 。队列中的任务运行完后的结果或者状态需要被任务发送者知道,那么就需要一个地方储存这些结果,就是 Result Stores 了。 常见的 backend 有 redis、Memcached 甚至常用的数据库都可以。 4. Tasks 就是 想在队列中进行的任务 ,有异步任务和定时任务。一般由用户、触发器或其他操作将任务入队,然后交由 workers 进行处理。 5. Beat 定时任务调度器 ,根据配置定时将任务发送给Brokers。 二、Celery 基本使用 1.创建一个celery application

【Spring cloud】Spring Cloud 功能整理

爱⌒轻易说出口 提交于 2020-08-06 08:14:58
Spring Cloud 功能 开源实现 说明 通用功能 服务注册与发现 Netflix Eureka Consul Discovery 兼容且提供替换组件 负载均衡 Netflix Ribbon 兼容 服务调用 Feign RestTemplate 兼容 配置管理 Config Server Consul Config 兼容且提供替换组件 服务网关 Spring Cloud Gateway Netflix Zuul Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式 , 目标是替代Netflix Zuul 链路跟踪 Spring Cloud Sleuth 兼容且提供替换组件 消息驱动 Spring Cloud Stream RabbitMQ binder Kafka binder 兼容且提供替换组件 消息总线 Spring Cloud Bus RabbitMQ Kafka 兼容且提供替换组件 安全 Spring Cloud Security 兼容 分布式任务调度 Spring Cloud Task 兼容 分布式协调 Spring Cloud Cluster 兼容 来源: oschina 链接: https://my.oschina.net/guoenzhou/blog/4292964

springboot整合mybatis和rabbitMQ实例

独自空忆成欢 提交于 2020-08-06 08:12:35
springboot整合mybatis和rabbitMQ的一个小例子 消息生产者服务搭建 springboot整合mybatis和rabbitMQ的框架搭建非常简单,分三步,第一步使用idea工具创建一个springboot工程,第二步在application.yml文件中配置相关信息,第三步在springboot启动类上面加注解。 创建工程好之后,将application.properties改为application.yml(个人喜好yml文件,当然喜欢什么用什么),添加如下配置 template:有关 AmqpTemplate 的配置 exchange:缺省的交换机名称,此处配置后,发送消息如果不指定交换机就会使用这个 spring : datasource : #driver - class - name : com . mysql . jdbc . Driver url : jdbc : mysql : / / 127.0 .0 .1 : 3306 / test ? useUnicode = true & characterEncoding = utf8 & serverTimezone = UTC username : root password : 123456 rabbitmq : host : 127.0 .0 .1 username : guest

分布式场景Swoole+redis使用消息队列

六月ゝ 毕业季﹏ 提交于 2020-08-06 05:26:55
前言:网站性能优化的场景需求 对于已有的mysql主从项目,应对数据量大时往往采取分库分表的做法,为了缩短页面响应采用一主多从的 主写+从读 的读写分离架构。 使用redis等级:一使用redis作为php的缓存层,存储常用、相对固定的公共数据;二:添加redis长用缓存,组成 mysql写+ redis读 的架构;三:甚至直接采用 redis读+写 的架构。mysql迁移redis需要后台程序的紧密配合。“读写分离”容易出现数据不一致的问题。 *面试* 优化相关 传统前后端优化途径: 1. 前端 减少请求次数:css精灵(小图合并到大图); data-image(data-icon:src=data:image/jpg;base64;xx,小图合并到js文件); 2. 网关 web资源防盗链refer监测; nginx限流,nginx负载均衡、nginx缓存静态资源、图片服务器、gzip等; http2.0; 3. 后端、数据库 升级到php7,使用服务模式启动网站; 使用redis、memcache缓存; mysql优化; 进阶: 1. 网关 mysql迁移redis,分布式集群部署; 2. 后端 添加针对高并发的消息队列,多线程、协程化,使用连接池; mysql慢查询分析 分布式部署常见问题: 登录session共享问题;读写分离的同步数据问题。 另外还各种诸如图片数据库

rabbitmq消息列队

北城余情 提交于 2020-08-06 04:11:03
RabbitMQ的安装 安装erlang yum –y install epel-release rpm -ivh erlang-solutions-1.0-1.noarch.rpm vim /etc/yum.repos.d/erlang_solutions.repo 把里面的内容更改为以下内容 [erlang-solutions] name=Centos $releasever - $basearch - Erlang Solutions baseurl=https://mirrors.tuna.tsinghua.edu.cn/erlang-solutions/centos/7/ gpgcheck=0 gpgkey=http://packages.erlang-solutions.com/debian/erlang_solutions.asc enabled=1 yum -y install erlang yum localinstall rabbitmq-server-3.8.3-1.el7.noarch.rpm 开启用户远程访问 vim /etc/rabbitmq/rabbitmq.config 创建rabbitmq.config 添加: [{rabbit, [{loopback_users, []}]}]. #执行插件命令rabbitmq-plugins enable

电商秒杀商品功能实现——rabbitMQ+redis

梦想的初衷 提交于 2020-08-05 22:20:45
1.思路: 当秒杀开始的时候,会有大量的高并发,解决高并发是我们的第一个目标,其次就是高并发的时候,会有超卖的现象,解决超卖是我们的第二个目标。 解决高并发: 我们使用rabbitMQ消息队列,让用户点击秒杀后,就进去队列中,这样可以缓解服务器的压力,削弱高并发的峰值。 解决超卖: redis是单进程单线程模式,我们可以使用redis的这一特性,来解决超卖的问题。 2.实现过程: 1.引入pom中的依赖,application写配置信息。 < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - amqp < / artifactId > < / dependency > < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - redis < / artifactId > < / dependency > #rabbitmq spring . rabbitmq . host = 10.9 .151 .60 #redis spring . redis .