摘要:
很多时候只要觉得捕获 DuplicateKeyException 就行,其实这样还不够,底层还会抛出其他异常类型,完整的捕获如下: import org.springframework.dao.DuplicateKeyException; public void method() { try { r 阅读全文
摘要:
可靠性保障 先上一个示意图 就上述的图示,我们逐步解析 step1:数据落库,这一步是必须的 step2:把消息落库,且初始化其状态为 0 (发送中) step3:把消息投递到 Broker 中 step4:Broker 发送成功应答 step5:生产者拿到成功应答,修改消息状态为1:(发送成功) 阅读全文
摘要:
不知道大家对于这个问题遇到过没有,或者大家听到这个问题的第一反应是什么,应该如何做,如何避免消息丢失,一起来看看 首先我们知道rocketmq的一个消息从生产到最终的消费过程需要经历总共三个阶段,或者说会经过三个地方,分别是producer的发送端、broker的持久化机制、以及consumer的消 阅读全文
摘要:
一、什么是消费幂等? 幂等:如果有一个操作,多次执行与一次执行所产生的影响是相同的,我们就称这个操作是幂等的。 基于上述的概念,结合消息消费的场景,我们能够总结出消息幂等的概念: 如果消息重试多次,消费者端对该重复消息消费多次与消费一次的结果是相同的,并且多次消费没有对系统产生副作用,那么我们就称这 阅读全文
摘要:
1. 消息发送重试机制 1. 简介 producer对发送失败的消息进行重新发送的机制,称为消息发送重试机制,也称为消息重投机制。 有一些限制: 生产者在发送消息时,若采用同步或异步发送方式,发送失败会重试,但oneway 消息发送方式发送失败是没有重试机制的。 只有普通消息有重试,顺序消息没有重试 阅读全文
摘要:
简单研究下rockermq 批量消息、过滤消息、事务消息的使用。 1. 批量消息 简介 批量消息的发送能提升投递小消息的性能。但是批量消息有一些限制,一批投递的消息应该有相同的主题、具有相同的刷盘策略、不支持延时消息与事务型消息。 另外,生产者发送消息的大小有一些限制。默认不超过1MB 的消息。如果 阅读全文
摘要:
1. 简单消息 这里使用三种消息的发送方式: 同步发送、异步发送、单向发送,以及消息的消费。 同步发送 package com.zd.bx.rocketmq.simple; import org.apache.rocketmq.client.producer.DefaultMQProducer; i 阅读全文
摘要:
低版本RocketMq-client clientId = ip + "@" + pid + ["@" +unitName] 高版本RocketMq-client clientId = ip + "@" + pid + # + 递增的随机数 + ["@" +unitName] Rocketmq-cl 阅读全文
摘要:
背景 RocketMQ使用过程中为了快速搭建消费服务,于是在同一个机器集群消费的方式起了多个消费者实例,结果发现部分消息没被消费到!本文是对问题产生原因的跟踪和分析,下面会将项目中遇到的问题简化成官方demo来说明。 问题重现 生产者代码 Producer.java /* * Instantiate 阅读全文
摘要:
前段时间有个朋友向我提了一个问题,他说在搭建 RocketMQ 集群过程中遇到了关于消费订阅的问题,然后他发了报错的日志给我看: the consumer's subscription not exist 我第一时间在源码里找到了报错的位置: org.apache.rocketmq.broker.p 阅读全文