![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rocketMQ
假装自己不胖
这个作者很懒,什么都没留下…
展开
-
rocketMQ之十六 幂等
消费幂等消息队列RocketMQ消费者在接收到消息之后,有必要根据业务的唯一Key对消息做幂等处理的必要性必要性可能出现消息重复的原因发送时消息重复:服务端完成持久化之后宕机,生产者认为持久化失败,重新发送投递时消息重复:服务端在发给消费者之后,消费者返回ack之后,服务端宕机了,认为自己消息投递失败,重复投递负载均衡时消息重复:网络抖动,Broker重启和订阅方应用重启...原创 2020-01-06 16:01:09 · 186 阅读 · 0 评论 -
rocketMQ之十五 消息重试
消息重试顺序消息的重试对于顺序消息的重试,消费者消费失败之后,mq会不断进行重试(1s一次),这是应用会被阻塞,所以要即时监控并处理消费失败的情况无序消息的重试当消费者消费消息失败时,可以通过设置返回状态达到消息重试的结果,如果是集群消费方式生效,广播方式不提供重试特性重试次数消息队列默认允许没条消息最多重试16次,如果16次后仍然失败,消息将不再投递,无论重试多少次,Me...原创 2020-01-06 15:21:40 · 1221 阅读 · 2 评论 -
rocketMQ之十四 负载均衡
负载均衡producer负载均衡生产者在发送消息时,会轮询所有的messageQueue,让消息平均落在不同的queue上,而queue可以散落在不同broker上,所以发送到不同brokerconsumer负载均衡集群方式AllocateMessageQueueAveragely:在拉取的时候指定那一条message queue,所以在消费者启动时,会触发一次负载均衡,更加...原创 2020-01-06 12:00:27 · 193 阅读 · 0 评论 -
rocketMQ之十三 高可用性
高可用性机制RocketMQ分布式集群是通过Master和Slave的配合达到高可用的Master和Slave的区别:Broker配置文件中,参数brokerId的值为0带包这个Broker是Master,大于0是SlaveMaster角色的Broker支持读和写,Slave角色的Broker仅支持读消费高可用有了主从结构之后,内部实现了自动切换,当Master不可用或繁忙的时候,...原创 2020-01-06 11:40:43 · 171 阅读 · 0 评论 -
rocketMQ之十二 消息存储
消息存储分布式列队有高可用的需求,所以需要持久化,避免消息丢失生产者发送消息mq收到消息,持久化之后,在存储中新增一条记录返回ack给生产者mq push消息给对应的消费者,然后等消费者返回ack如果消息者在指定时间内返回ack,mq认为消费成功,进行第六步,如果mq指定时间内没收到,则认为消息推送失败,会重试上一步的操作mq删除消息存储介质关系型数据库DBAc...原创 2020-01-06 10:58:10 · 208 阅读 · 0 评论 -
rocketMQ之十一 整合springboot
整合springboot添加依赖<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter --><dependency> <groupId>org.apache.rocketmq</groupId> <a...原创 2020-01-05 18:09:27 · 114 阅读 · 0 评论 -
rocketMQ之十 事务
事务事务消息的发送和提交发送消息(half消息)服务端响应消息写入结果根据发送结果执行本地事务(如果写入失败,辞职half消息对业务不可见,本地逻辑不执行)根据本地事务状态进行Commit或Rollbace(commit之后对消费者可见)事务补偿对没有commit/rollback的事务消息(pending状态的消息),从服务端发起一次回查producer收到回查消息,检查回...原创 2020-01-05 17:56:31 · 246 阅读 · 0 评论 -
rocketMQ之九 过滤消息
过滤消息大部分我们在同一个topic下面,指定消息的tag就可以划分不同的消息DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(“groupName”);//订阅topic,第二个参数指定的tagconsumer.subscribe(“TopicName”,“TAGA || TAGB || TAGC”);这样子...原创 2020-01-05 15:08:34 · 298 阅读 · 0 评论 -
rocketMQ之八 发送批量消息
发送批量消息批量发送下消息优点:能提高性能缺点一批消息只能有相同的topic,相同的waitStroeMsgOK不能是延时消息一批消息的总大小不能超过4MBpublic class BatchProducer { public static void main(String[] args) throws Exception { //初始化生产者...原创 2020-01-05 14:34:47 · 1352 阅读 · 0 评论 -
rocketMQ之七 延时任务
延时任务延时生产者延时任务无法指定任意时间延迟,只能设置几个固定的延时等级,从1s到2h分别是1到18public class ScheduledMessageProducer { public static void main(String[] args) throws Exception { //初始化生产者 DefaultMQProduce...原创 2020-01-05 12:09:47 · 658 阅读 · 0 评论 -
rocketMQ之六 顺序消息
顺序消息有些消息我们需要保证其消费和生产的顺序,比如选择前几百个送东西,或者做优惠有序分为全局有序和分区有序全局有序就是无论发的是不是同一个分区,我都可以按照你生产的顺序来消费分区有序就只针对发到同一个分区的消息可以顺序消费原理:发送消息时会轮询的发送到不同queue,如果强制吧消息放在同一个queue,这样就是分区有序,如果是不同queue,就是全局排序public c...原创 2020-01-05 11:55:36 · 659 阅读 · 0 评论 -
rocketMQ之五 消费消息的两种模式
消费消息的两种模式负载均衡模式(默认)多个消费者采用负载均衡消费,每个消费者处理的消息不同public class ClusteringConsumer { public static void main(String[] args) throws Exception { //实例化消费者,指定组名 DefaultMQPushConsumer cons...原创 2020-01-05 11:07:10 · 1088 阅读 · 0 评论 -
rocketMQ之四 生产者(同步,异步,单向消息)
消息发布之同步,异步消息引入依赖<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client --><dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>...原创 2020-01-05 10:53:34 · 741 阅读 · 0 评论 -
rocketMQ之三 集群概念和工作流程
集群概念和工作流程各个角色的介绍producer:消息的发送者consumer:消息的接受者Broker:暂存和传输消息NameServer:管理BrokerTopic:区分消息的种类,一个发送者可以发送消息给一个或者多个Topic,一个消息的接受者可以订阅一个或者多个Topic消息Message Queue:相当于Topic的分区,用于并行发送和接受消息集群的特点Name...原创 2020-01-04 21:56:16 · 316 阅读 · 0 评论 -
rocketMQ之二 安装
安装下载http://rocketmq.apache.org/dowloading/releases/安装把下载的安装包扔到自己的虚拟机上,解压目录介绍bin:启动的脚本,包括shell脚本和CMD脚本conf:配制文件,包括broker配置文件lib:依赖的jar包,Netty,commons-lang,FastJson等启动MQ启动NameServer启...原创 2020-01-04 20:29:18 · 140 阅读 · 0 评论 -
rocketMQ之一 应用场景和优缺点
应用场景及其优缺点应用场景应用解耦系统耦合性越高,容错性越低,如果都是直线操作,其中一个部位出问题,整个流程都走不下去如果使用mq,即使其中流程的一部分出问题,只要mq里面数据还在.等到流程恢复的时候,就可以重新走属于自己的一部分,而不会导致其他流程的部分也阻塞流量削峰如果每次访问都是直接连接到应用上的话,服务器的上限就需要根据最大的访问量来设置,而最大的访问量不会一直存在,也...原创 2020-01-04 20:05:27 · 1500 阅读 · 0 评论