随笔分类 -  中间件

摘要:# 集群扩容 ## 加入集群 1)启动一个新的MQ容器: 点击查看代码 ``` docker run -d --net mq-net \ -v ${PWD}/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \ -e RABBITMQ_DEFAULT_U 阅读全文
posted @ 2023-06-29 16:47 xycccode 阅读(92) 评论(0) 推荐(0) 编辑
摘要:Java代码创建仲裁队列 ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037-20230629154950671-1666791666.png) 点击查看代码 ``` @Bean public Queue quorumQueue() 阅读全文
posted @ 2023-06-29 16:20 xycccode 阅读(43) 评论(0) 推荐(0) 编辑
摘要:仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征: - 与镜像队列一样,都是主从模式,支持主从数据同步 - 使用非常简单,没有复杂的配置 - 主从同步基于Raft协议,强一致 从RabbitMQ 3.8版本开始,引入了新的仲裁队列,他具备与镜像队里类似的功能,但使用更加 阅读全文
posted @ 2023-06-29 15:45 xycccode 阅读(197) 评论(0) 推荐(0) 编辑
摘要:RabbitMQ是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。RabbitMQ的集群有两种模式: •**普通集群**:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。 •**镜像集群**:是一种主从集群,普通集群的基础上,添加了主从备份 阅读全文
posted @ 2023-06-29 01:58 xycccode 阅读(173) 评论(0) 推荐(0) 编辑
摘要:消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。 ![](https://img2023.cnblogs.com/blog/3120037/202306/3120037- 阅读全文
posted @ 2023-06-28 23:18 xycccode 阅读(23) 评论(0) 推荐(0) 编辑
摘要:当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false 消息是一个过期消息,超时无人消费 要投递的队列消息满了,无法投递 如果这个包含死信的队列配置了`dea 阅读全文
posted @ 2023-06-28 20:54 xycccode 阅读(19) 评论(0) 推荐(0) 编辑
摘要:我们都知道消息在消费者端消费的时候,如果消费端出现异常,那么它会依据spring的重试机制进行重试,达到最大重试次数后,消息会被丢弃,这是由Spring内部机制决定的。 在开启重试模式后,重试次数耗尽,如果消息依然失败,则需要有MessageRecovery接口来处理,它包含三种不同的实现: Rej 阅读全文
posted @ 2023-06-28 18:13 xycccode 阅读(427) 评论(0) 推荐(0) 编辑
摘要:默认的失败重试机制是有问题的。 当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者,然后再次异常,再次requeue,无限循环,导致mq的消息处理飙升,带来不必要的压力: 怎么办呢? 我们可以利用Spring的retry机制,在消费者出现异常时利用本地重试,而不是无限制 阅读全文
posted @ 2023-06-28 17:44 xycccode 阅读(50) 评论(0) 推荐(0) 编辑
摘要:RabbitMQ是**阅后即焚**机制,RabbitMQ确认消息被消费者消费后会立刻删除。 而RabbitMQ是通过消费者回执来确认消费者是否成功处理消息的:消费者获取消息后,应该向RabbitMQ发送ACK回执,表明自己已经处理消息。 设想这样的场景: - 1)RabbitMQ投递消息给消费者- 阅读全文
posted @ 2023-06-28 17:28 xycccode 阅读(73) 评论(0) 推荐(0) 编辑
摘要:我们看下之前启动idea测试消息发送的时候在后台生成的一条消息,现在已经在消息队列里面还没有被消费。 现在我们重启下RabbitMQ,执行linux命令:docker restart mq 看上图实时显示的错误信息,失去连接了,接下来刷新这个页面,可以发现这个对象没有了。 说明rabbit消息并不会 阅读全文
posted @ 2023-06-28 17:06 xycccode 阅读(202) 评论(0) 推荐(1) 编辑
摘要:消息队列在使用过程中,面临着很多实际问题需要思考: 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收 阅读全文
posted @ 2023-06-27 18:28 xycccode 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Canal [kə'næl],译意为水道/管道/沟渠,canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。GitHub的地址:https://github.com/alibaba/canal Canal是基于mysql的主从同步来实现的,MySQ 阅读全文
posted @ 2023-06-27 18:23 xycccode 阅读(72) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示