Rabbit MQ
文章平均质量分 83
Rabbit MQ
大漠知秋
为了不显得懒,我还是写点东西吧
展开
-
CentOS RabbitMQ 集群安装
三台机器都如下配置:每台机器还可以配上自己对应的 hosts,比如在 上:rabbit1这个模式下所有节点都会存储元数据,但是消息数据只有对应的节点有。假设在 rabbit1 上创建了一个队列 ,所有的节点都会有 这个队列的基本信息,比如队列名、队列属性等等,这时,发送端发送了消息到队列 中,那这个消息就只有 rabbit1 这个节点上的队列有,其他节点是没有的。如果 所在节点宕掉,消息就无法正常消费了。 是类似于令牌、密钥之类的东西,可以让节点和节点之间信任访问。rabbit2 的原创 2022-07-07 08:12:28 · 405 阅读 · 0 评论 -
CentOS yum 安装 RabbitMQ
Erlang 与 RabbitMQ 版本对照[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnkTVvj6-1657152507425)(https://www.rabbitmq.com/which-erlang.html)]](http://pencil.file.lynchj.com/depend/20220706084306.png)官方安装说明官方推荐的安装方式:推荐安装 gpgkey 密钥设置仓库,这里仓库看自己是什么版本 CentOS,如果是 Cent原创 2022-07-07 08:08:55 · 1059 阅读 · 0 评论 -
SpringBoot AMQP
SpringBoot 已经提供了对 AMQP 协议完全支持的 依赖,引入此依赖即可快速方便的在 SpringBoot 中使用 RabbitMQ。参考:Spring AMQP。声明式实现(推荐)注意,以上配置再启动 SpringBoot 并不会立马创建交换机、队列、绑定,SpringBoot AMQP 有懒加载,需要等到使用 时才会创建。什么是使用 呢?再比如监听了队列死信队列机制死信队列需要在创建 Queue 时指定对应属性:RabbitTemplate 是 SpringBoo原创 2022-07-07 08:05:28 · 7203 阅读 · 0 评论 -
死信队列机制
什么是?其本质也是一个队列,只是配置上了一个 属性。什么是?死信其实也可以理解为普通的的消息,只是在以下几种情况会称为死信。中成为死信的消息会转发到普通的中(起名带有 关键字,是为了方便知道这个是用来接收死信用的),再路由到一个普通的(起名同交换机)中,最后再由消费这个 队列的消费者处理,是记录异常或者通知运维人员。这里根据图明确一下:红色的为,在没有死信消息出现的时候,其就是普通的队列,当出现死信时,会转发到指定的交换机中。也可以通过 Web 管控台建立死信队列会多一个 的特征完整的意思就是:建原创 2022-07-06 22:53:27 · 1905 阅读 · 0 评论 -
消息过期机制
设想一下只有生产者,而没有消费者的时候或者消费者处理能力比生产能力弱 N 倍的时候,RabbitMQ 上就会堆积大量消息,几万、几十万、几百万。那 RabbitMQ 所在机器的内存、硬盘等硬件资源也是有限的,超过负荷就会出现崩溃的现象,导致消息丢失。针对这个问题 RabbitMQ 提供了消息过期机制 TTL(Time to Live)。简单理解就是超过一定时间没有被消费的消息,就过期了,要扔掉。消息本身有一个过期时间,每个消息之间是不一样的。进入队列的所有消息都具有一个固定的过期时间。没有一个固定的时间,要原创 2022-07-06 22:51:04 · 713 阅读 · 0 评论 -
消费者限流机制
默认情况下,消费者并不是处理一条消息,RabbitMQ Server 再从 Queue 中推送一条继续处理。而是一下子尽可能的投送更多,缓存到到本地内存中等待处理。比如 Queue 中存在 10W 条数据,消费者会一边处理一条,一边会进行缓存后续推送的 N 条,而这缓存的 N 条有可能会造成 OOM 或者其他故障。要解决上面的问题也简单,就是控制消费者不要无限制的进行缓存消息,控制缓存消息数量。为了解决上面的问题,RabbitMQ 提供了 功能,QoS 功能保证了在一定数量的消息未被 Ack 前,不推送新的原创 2022-07-06 22:50:04 · 278 阅读 · 0 评论 -
RabbitMQ 消息百分百投递方案
如上图所示,从 开始,发送一个消息并指定 ,经由 中的 到达对应的 ,消息到达 之后根据 路由到对应的 。消息再从 中经由 端的 中的 到达对应的 。这里所说,是指消息从 Publisher 到 Consumer。从上节可以知道,消息的投递是一个看似简单,其实内部还是比较复杂的操作,保不齐中间哪一个环节出现问题,就会导致消息的丢失。此处有三个环节可能出现消息投递失败的问题。针对这三个问题,RabbitMQ 也提供了对应的解决方案。同步多条消息确认机制开启发送端消息确认机制:发送多次原创 2022-07-06 22:48:09 · 699 阅读 · 0 评论 -
RabbitMQ 死信队列
文章目录死信队列的作用如何配置死信队列样例死信队列的作用 使用 RabbitMQ 的时候可能会碰到以下几个问题:消费者端调用了 basicNack 或者 basicReject,并且没有进行 requeue,如果没做其他措施的话,这个消息也就丢失了。消息在队列的存活时间超过设置的 TTL 时间。消息队列的消息数量已经超过最大队列长度。 以上几个问题都会导致消息丢失,消息丢失的代价可大可小,视自己业务情况而定,有些业务如果消息丢失无所谓的话就不用理睬,相信大部分业务都是不允许丢失的。死信队原创 2021-07-14 15:50:44 · 470 阅读 · 0 评论 -
SpringBoot 完全整合 RabbitMQ + 100% 发送消息 + 高可靠消费消息 + 源码解析
文章目录软件版本发送消息配置信息发送消息对发送的消息进行回调确认消费消息手动 Ack 模式acknowledge-mode=manual 的 yml 配置关于异常MessageRecovererImmediateRequeueMessageRecovererRepublishMessageRecoverer总结RejectAndDontRequeueRecovererImmediateRequeueMessageRecovererRepublishMessageRecoverer自动 Ack 模式ackno原创 2021-07-13 11:06:48 · 1468 阅读 · 1 评论 -
RabbitMQ + Keepalived + HAProxy 高可用镜像集群
最终结构图:RabbitMQ镜像集群简介RabbitMQ镜像集群是通过在RabbitMQ服务器配置相应的规则,把交换器、队列的数据进行Node之间Copy,对内网流量要求较高。在生产者扔消息时,会在所有Node之间同步完毕之后才会响应扔消息成功。RabbitMQ镜像集群的安装环境声明 三台CentOS 7.4 /etc/hosts配置分别为: ...原创 2018-04-29 17:20:35 · 2403 阅读 · 0 评论