设计MQ的思路
摘要:分布式 首先这个mq得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计一个分布式系统,参照一下kafka的设计理念,broker->topic->pratition,每个partition放一个机器,就存一部分数据。如果现在资源不够了,简单呀,给topic增加parti
阅读全文
posted @
2021-11-11 11:06
公众号/架构师与哈苏
阅读(61)
推荐(0) 编辑
消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?大量消息持续积压几个小时,怎么办?
摘要:消息积压处理办法1:临时紧急扩容 先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉。新建一个topic,partition是原来的10倍,临时建立好原先10倍的queue数量。然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不
阅读全文
posted @
2021-11-11 10:40
公众号/架构师与哈苏
阅读(330)
推荐(0) 编辑
RabbitMQ死信队列,延时队列
摘要:死信队列 消息被消费方否定确认,使用channel.basicNack或channel.basicReject, 并且此时requeue属性被设置为false。 消息在队列的存活时间超过设置的TTL时间 消息队列的消息数量已经超过最大队列长度 那么该消息将成为"死信"。"死信"消息会被RabbitM
阅读全文
posted @
2021-11-08 16:45
公众号/架构师与哈苏
阅读(38)
推荐(0) 编辑
rabbitmq中的三种交换器(匹配模式)
摘要:direct(直接交换模式) 消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中。它是完全匹配,单播的模式。 fanout(广播分发模式) 每个发到fanout类型交换器的消息都会分到所有绑定的队列上去。很像子网广播,每台子网内
阅读全文
posted @
2021-09-03 16:24
公众号/架构师与哈苏
阅读(128)
推荐(0) 编辑
RabbitMQ的集群模式
摘要:单机模式(生产基本不用) 普通集群模式 默认模式,以两个节点(rabbit01,rabbit02)为例来进行说明,对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列结构。当消息进入rabbit0
阅读全文
posted @
2021-08-30 17:10
公众号/架构师与哈苏
阅读(192)
推荐(0) 编辑
如何保证消息的顺序性
摘要:先看看顺序会错乱的场景:RabbitMQ: 一个queue,多个consumer,这就乱了 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不
阅读全文
posted @
2021-08-30 16:36
公众号/架构师与哈苏
阅读(59)
推荐(0) 编辑
如何解决数据丢失问题
摘要:rabbitmq数据丢失,分为生产者丢数据,消息队列丢数据和消费者丢数据。 生产者数据丢失 在生产者发送到RabbitMQ时有可能因为网络问题导致投递失败,从而丢失数据。 方案1:rabiitmq事物 采用rabbitmq提供的事务功能 生产者发送数据之前开启rabbitmq事务(channel.t
阅读全文
posted @
2021-08-30 15:36
公众号/架构师与哈苏
阅读(205)
推荐(0) 编辑
什么是Rabbitmq
摘要:什么是RabbitMQ? 采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供存在,实现了服务之间的高度解耦。 使用RabbitMQ有什么好处? 解耦 可以通过队列,来实现消费者和生产者 异步 生产者放到队列中,消费者随时可以来消费 消峰 可以使用消息队列,生产者大量放
阅读全文
posted @
2021-08-30 10:35
公众号/架构师与哈苏
阅读(66)
推荐(0) 编辑
消息队列怎么保证消息有没有重复消费(幂等性)?
摘要:普通业务控制幂等性 1.mysql唯一索引 2.token机制(请求前生成一个token,请求时携带这个token,如果这个token在redis中没有则继续,有则 有请求进行中) 3.mysql悲观锁,乐观锁(推荐使用乐观锁) 4.分布式锁(redis,zookeeper) 问题的原因 我看先来看
阅读全文
posted @
2021-05-10 14:13
公众号/架构师与哈苏
阅读(325)
推荐(0) 编辑
消息队列优缺点和选型
摘要:消息队列的优点 削峰: 比如:在一天中2点的访问量突然爆发,没用MQ的话系统,根本承受不住这种压力,数据库直接down掉,有了MQ会把突增的请求放入,慢慢消费掉。 解耦: 比如说有两个服务A和B,A把消息放到MQ中,B来进行消费。A只需要把消息放到MQ中,不用关心否有人进行消费。B只需要有消息就从M
阅读全文
posted @
2021-05-10 10:57
公众号/架构师与哈苏
阅读(312)
推荐(0) 编辑
SpringBoot中使用rabbitmq
摘要:这里使用一个最简单的模式,一个生产者内容被消费一次 配置类 在rabbitmq web管理界面可以看到OPERATERECORD_QUEUE 这个变量里面的名称 OperateRecordRabbitConfig.java package com.meeno.inner.oa.common.rabb
阅读全文
posted @
2020-09-22 18:20
公众号/架构师与哈苏
阅读(123)
推荐(0) 编辑
Rabbit-用户上线接收消息
摘要:application-dev.yml spring: rabbitmq: username: admin password: admin host: 192.168.0.45 port: 5672 消费者实现类 MyConsumer.java package com.meeno.inner.oa.
阅读全文
posted @
2020-09-22 10:01
公众号/架构师与哈苏
阅读(191)
推荐(0) 编辑
Centos7上安装rabbitmq和使用
摘要:github rpm地址: https://github.com/rabbitmq/erlang-rpm 要安装rabbitmq先安装它的语言 创建erlang repo /etc/yum.repos.d/rabbitmq-erlang.repo # In /etc/yum.repos.d/rabb
阅读全文
posted @
2020-09-18 12:13
公众号/架构师与哈苏
阅读(301)
推荐(0) 编辑