![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息队列
文章平均质量分 76
huapro.vip
不忘初心
展开
-
rabbitmq五种工作模式
1、简单模式 在这里插入图片描述 1个生产者将消息交给默认的交换机(AMQP default) 2 交换机获取消息后交给绑定这个生产者的队列(关系是通过队列名称完成) 3 监听当前队列的消费者获取消息,执行消费逻辑 应用场景:短信,聊天 2、工作模式(资源争抢) 1 生产者将消息交个交换机 2 交换机交给绑定的队列 3 队列由多个消费者同时监听,只有其中一个能够获取这一条消息,形成了资源的争抢,谁的资源空闲大,争抢到的可能越大; 应用场景:抢红包,大型系统的资源调度 3 发布订阅(publish/fanou原创 2022-03-05 08:05:32 · 3139 阅读 · 0 评论 -
rabbitmq 怎么保证幂等性,数据一致性问题
mq的作用主要是用来解耦,削峰,异步, 增加MQ,系统的复杂性也会增加很多, 也会带来其他的问题,比如MQ挂了怎么办,怎么保持数据的幂等性 幂等性问题通俗点讲就是保证数据不被重复消费,同时数据也不能少, 也就是数据一致性问题。 下面是MQ丢失的3种情况 1,生产者发送消息至MQ的数据丢失 解决方法:在生产者端开启comfirm 确认模式,你每次写的消息都会分配一个唯一的 id, 然后如果写入了 RabbitMQ 中,RabbitMQ 会给你回传一个 ack 消息,告诉你说这个消息 ok 了 2,MQ收到消原创 2022-03-02 14:32:08 · 1587 阅读 · 0 评论 -
rabbimq如何保证数据安全性
一. 持久化 RabbitMQ支持消息的持久化,也就是数据写在磁盘上。 (1)exchange持久化,在声明时指定durable => 1 (2)queue持久化,在声明时指定durable => 1 (3)消息持久化,在投递时指定delivery_mode => 2(1是非持久化) 注意:如果消息持久化,queue不持久化,重启服务消息依然会丢失,但是exchange不持久化就不会有影响,所以在持久化消息的同时一定要持久化queue; 二. ACK 上面持久化保证了队列里的数据在服务器出转载 2022-03-02 13:17:32 · 557 阅读 · 0 评论 -
消息队列消息积压了怎么办?
Q:刚开始是对这个疑问抱有质疑态度的,因为使用消息队列的其中目的就是削峰填谷,来避免高流量时,对下游服务的冲击,所以使用消息队列进行缓冲,下游根据自己的消费能力去消费, 我感觉这就是消息积压本就是使用消息队列的功能,怎么会是问题呢? A:首先消息积压是正常现象,但凡是过多就不正常了。积压越来越多就需要处理了。就像一个水库,日常蓄水是正常的,但下游泄洪能力太差,导致水库水位一直不停的上涨,这个就不正常了。 消息发送主要涉及三方:producer/consumer/broker,所以发生消息积压要从这三方来看。原创 2022-02-15 13:57:04 · 786 阅读 · 0 评论