
RabbitMQ
文章平均质量分 82
RabbitMQ
土味儿~
这个作者很懒,什么都没留下…
展开
-
SpringBoot下RabbitMQ的实战应用:动态创建和动态监控队列、死信、备份交换机
每个用户对应一个普通队列;当用户过多时,相应的队列也会很多,并且队列是持久化的,会占用较多的系统资源;交换机收到消息,但无法投递时,转发至备份交换机,再广播至对应队列。缓存操作不是本文的重点,用模型类代替;缓存中未得到确认的消息,由定时器重新发送;用户登录后,动态切换要监控的队列;未发送成功的消息,由缓存保存,定时重发。如果用户退出后,也要更新监控列表;是接收不到的,消息会存储在相应对列中。发消息,消息应该不会被消费,存在。项目要足够稳健,消息不能丢失。交换机、队列、消息持久化。,这时再向上一个登录用户。原创 2023-01-07 18:17:54 · 4177 阅读 · 7 评论 -
【图文详解】RabbitMQ集群搭建、镜像队列、负载均衡HAProxy、故障转移Keepalived
本教程是RabbitMQ系列教程的延续;搭建环境在之前的基础之上。1、搭建集群1)克隆三台虚拟机2)SSH连接3)修改hostname名称三台机器分别为node1、node2、node3不同的系统修改方法不同,CentOS7修改方法:命令修改# 修改hostnamectl set-hostname node1# 重启reboot文件修改# 修改文件vim /etc/hostname# 删除或注释掉原来的,在前面加上node1node1#.原创 2022-03-30 14:32:09 · 3303 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】8、幂等性、优先级队列、惰性队列
1、幂等性1)概念用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。如:支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是在响应客户端的时候也有可能出现网络中断或者异常等等2)解决思路MQ消费者的幂等性的解决一般使用 全局ID 或者 写个原创 2022-03-29 10:23:52 · 2485 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】7、发布确认高级(SpringBoot版本):回调接口、回退消息、备份交换机
在生产环境中由于一些不明原因,导致 RabbitMQ 重启。在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?1、发布确认SpringBoot版本1)确认机制方案2)代码架构图3)配置文件spring: rabbitmq: host: 192.168.19.101 port: 5672 us原创 2022-03-29 10:16:37 · 2375 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】6、图文详解 延时队列:整合Springboot 队列优化 Docker中安装插件及代码实现
1、概念延时队列(延迟队列):队列内部是 有序 的,最重要的特性就体现在它的 延时 属性上延时队列中的元素是希望在指定时间到了以后或之前取出和处理延时队列就是用来存放需要在指定时间被处理的元素的队列2、使用场景订单在十分钟之内未支付则自动取消新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒用户注册成功后,如果三天内没有登陆则进行短信提醒用户发起退款,如果三天内没有得到处理则通知相关运营人员预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议这原创 2022-03-28 10:49:59 · 1587 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】5、图文详解 死信队列
1、概述死信:就是 无法被消费的消息。一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因,导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中用户在商城下单成功并点击去支付后,在指定时间未支付时自原创 2022-03-26 17:35:29 · 1925 阅读 · 0 评论 -
【尚硅谷 RabbitMQ 精髓】4、交换机概述、临时队列、绑定RoutingKey、交换机分类(Fanout、Direct、Topics)与比较
1、概述RabbitMQ消息传递模型的核心思想是:生产者的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递到了哪些队列中。生产者只能将消息发送到交换机(exchange)。交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息:是应该把这些消息放到特定队列,还是说把他们放到许多队列,还是说应该丢弃它们。这就的由交换机的类型来决定。总共有以下几个类型:直接(direct)主题(topic)标题(he原创 2022-03-26 10:34:23 · 1607 阅读 · 2 评论 -
【尚硅谷 RabbitMQ】3、图文详解 发布确认confirm 原理及策略(开启,单个、批量、异步)
1、发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了;如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker回传给生产者的确认消息中delivery-tag域包含了确认消息的序列号,此外 broker也可以设置 basicAck 的m原创 2022-03-25 16:28:19 · 1782 阅读 · 3 评论 -
【尚硅谷 RabbitMQ】2、工作队列 Work Queue 自动手动应答 持久化 轮询/非公平分发 预取值
1、简介工作队列(又称任务队列),主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。2、实现工作队列默认轮询分发(按人头分配,表面公平,其实不公平)1)抽取工具类package com.tuwer.utils;import com.rabbitmq.client.Channel;import com.rabbitmq原创 2022-03-24 19:55:07 · 926 阅读 · 0 评论 -
【尚硅谷 RabbitMQ】1、消息队列概念 RabbitMQ核心部分、安装、web界面、授权 HelloWorld
本系列课程参考于:https://www.bilibili.com/video/BV1cb4y1o7zzhttps://blog.youkuaiyun.com/lyyrhf/article/details/120159288感谢分享!1、消息队列概念1、消息队列MQ1)概念什么是MQ?MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的.原创 2022-03-24 19:41:54 · 389 阅读 · 0 评论 -
【RabbitMQ】7、AMQP 及 RabbitMQ的核心组成部分
1、什么是AMQP?AMQP全称:Advanced Message Queuing Protocol(高级消息队列协议)。是应用层协议的一个开发标准,为面向消息的中间件设计。AMQP生产者流转过程AMQP消费者流转过程2、RabbitMQ的核心组成部分1、核心组成部分核心概念:Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-serverConnection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次原创 2022-03-23 12:58:29 · 1446 阅读 · 0 评论 -
【RabbitMQ】6、Simple 简单模式完整实现步骤
1、实现步骤jdk1.8构建一个maven工程导入rabbitmq的maven依赖启动rabbitmq-server服务定义生产者定义消费者观察消息的在rabbitmq-server服务中的过程2、构建一个maven工程3、导入rabbitmq依赖1)Java原生依赖<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --><dependency> <groupI原创 2022-03-23 12:51:11 · 842 阅读 · 0 评论 -
【RabbitMQ】4、Docker中安装RabbitMQ
1、Docker安装【Docker】2、基本组成、CentOS下安装、卸载、底层原理_土味儿~的博客-优快云博客2、Docker常见命令【Docker】3、常用命令总结:镜像、容器等_土味儿~的博客-优快云博客3、安装rabbitmq参考网站:https://www.rabbitmq.com/download.htmlhttps://registry.hub.docker.com/_/rabbitmq/4、获取rabbitmq镜像# 拉取镜像:这一步可以省略;直接run运行即可,当原创 2022-03-22 19:03:03 · 1145 阅读 · 1 评论 -
【RabbitMQ】5、用户角色分类
1、none不能访问management plugin2、management查看自己相关节点信息列出自己可以通过AMQP登入的虚拟机查看自己的虚拟机节点 virtual hosts的queues,exchanges和bindings信息查看和关闭自己的channels和connections查看有关自己的虚拟机节点virtual hosts的统计信息。包括其他用户在这个节点virtual hosts中的活动信息。3、Policymaker包含management所有权限查看和原创 2022-03-22 19:06:09 · 141 阅读 · 0 评论 -
【RabbitMQ】3、Web管理界面及授权操作
1、RabbitMQ管理界面1)安装management插件默认情况下,rabbitmq是没有安装web端的客户端插件,需要安装才可以生效rabbitmq-plugins enable rabbitmq_management说明:rabbitmq有一个默认账号和密码是:guest 默认情况只能在localhost本机下访问,所以需要添加一个远程登录的用户。2)重启服务systemctl restart rabbitmq-server一定要记住,在对应服务器(阿里云,腾讯云等)的安全组中原创 2022-03-22 18:56:20 · 1455 阅读 · 0 评论 -
【RabbitMQ】2、RabbitMQ入门及安装
1、概述官网:https://www.rabbitmq.com/RabbitMQ is the most widely deployed open source message broker.With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at原创 2022-03-22 18:51:41 · 542 阅读 · 0 评论 -
【RabbitMQ】1、消息队列中间件概述
本系列课程参考于:https://www.kuangstudy.com/zl/rabbitmqhttps://www.bilibili.com/video/BV1dX4y1V73G感谢分享!1、什么是中间件?1)概念我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个不同的业务系统,这些系统可能基于不同的操作系统、不同的数据库、异构的网络环境。现在的问题是,如何把这些信息系统结合成一个有机地协同工作的整.原创 2022-03-22 18:43:13 · 397 阅读 · 0 评论