RocketMQ消费者实践
最近工作中用到了RocketMQ,现记录下,如何正确实现消费~
- 消费者需要注意的问题
- 防止重复消费
- 如何快速消费
- 消费失败如何处理
- Consumer具体实现
- 防止重复消费
重复消费会造成数据不一致等问题。所以,消费者要做到消费幂等。
1)每次消费,记录messageId;如果再次消费该message,查询messageId是否已存在,已存在,就跳过消费;
2)使用具体业务状态来防止重复消费,例如如果状态已经被变更,说明已有消息被消费;
- 如何快速消费
消费过程缓慢,势必会造成消息积压,如何提高消费速度势必比较重要:
每次接收到消息后,不做处理(具体不一定,最好是简单),直接将消息保存到本地数据库,然后后台异步处理消息,这么做的好处:
1) 快速消费,如果消费过程比较耗时(大量更新,RPC调用等),可以将消息插入本地,然后后台异步消费,消费完成,更新本地消息状态。
2)失败可控,如果某条消息消费失败,不依赖于mq的重试机制,可以定时重跑消费失败的消息,或者人工触发重试消费。
- 消费失败如何处理
消费过程不能保证不出异常,虽然mq消费失败有重试机制,但我们并没有这么做,而是:
跟上面提到的一样,由于已经把消息存到了本地,消费失败,也不用担心,后台重跑即可~~~~
如果大家觉得上面说的哪方面有问题,或者有更好的实践,欢迎留言~~~~
RocketMQ消费者实践的更多相关文章
- RocketMQ消费者示例程序
转载请注明出处:http://www.cnblogs.com/xiaodf/ 本博客实现了一个简单的RocketMQ消费者的示例,MQ里存储的是经过Avro序列化的消息数据,程序读取数据并反序列化后, ...
- 深入研究RocketMQ消费者是如何获取消息的
前言 小伙伴们,国庆都过的开心吗?国庆后的第一个工作日是不是很多小伙伴还沉浸在假期的心情中,没有工作状态呢? 那王子今天和大家聊一聊RocketMQ的消费者是如何获取消息的,通过学习知识来找回状态吧. ...
- RocketMQ最佳实践
1.RocketMQ中的专业术语 Topic topic表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息.物流消息...... 一条消息必须有一个Topic. Tag Tag表示消息的第 ...
- RocketMQ最佳实践(一)4.0版本/概念介绍/安装调试/客户端demo
为什么选择RocketMQ 我们来看看官方回答: “我们研究发现,对于ActiveMQ而言,随着越来越多的使用queues和topics,其IO成为了瓶颈.某些情况下,消费者缓慢(消费能力不足)还会拖 ...
- RocketMQ 消费者
本文分析 DefaultMQPushConsumer,异步发送消息,多线程消费的情形. DefaultMQPushConsumerImpl MQClientInstance 一个客户端进程只有一个 M ...
- 分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...
- 分布式开放消息系统(RocketMQ)的原理与实践(转)
转自:http://www.jianshu.com/p/453c6e7ff81c 分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回 ...
- 分布式消息中间件rocketmq的原理与实践
RocketMQ作为阿里开源的一款高性能.高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一.顺序消息 消息有序指的是 ...
- 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...
随机推荐
- [NOIP2003] 普及组
乒乓球 模拟 /*By SilverN*/ #include<iostream> #include<algorithm> #include<cstring> #in ...
- 「CodePlus 2018 3 月赛」白金元首与克劳德斯
所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重 ...
- SQL SERVER 2012 第四章 连接 JOIN语句的早期语法结构 & 联合UNION
1/内部连接的早期语法结构 INNER JOIN SELECT * FROM Person.Person JOIN HumanResources.Employee ON Person.Person.I ...
- web应用启动的时候SpringMVC容器加载过程
<!-- 配置DispatcherServlet --> <servlet> <servlet-name>springmvc</servlet-name> ...
- java验证身份证号码是否有效源代码
原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...
- java native interface JNI 调用Java方法
在上一篇文章中介绍了JNI.以及java调用JNI.这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你能够创建Java对象,get.set 静态(static)和 实例(instanc ...
- Meteor事件
使用事件是非常简单的.我们将学习如何使用tag,class 和id作为事件选择器. 让我们创建HTML模板三大要素.第一个是 p 标签,第二个是 myClass 类,最后一个是myId. meteor ...
- socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么?
参考: https://bbs.csdn.net/topics/391024376 别瞎猜测. 所谓bind,就是指绑定本地接受端口. 指定ip,是为了分辨多ip主机. --------------- ...
- 全文搜索引擎 Elasticsearch 安装
全文搜索引擎 Elasticsearch 安装 学习了:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html 拼音:https://www ...
- SpringBoot初始教程之项目结构(一)
SpringBoot初始教程之项目结构 1 简介 spring Boot makes it easy to create stand-alone, production-grade Spring ba ...