RocketMq
WoodieWang
20岁,30年的开发经验,就问你怕不怕!
展开
-
rocket消息的重试机制
在消息的发送和消费过程中,都有可能出现错误,如网络异常等,出现了错误就需要进行错误重试,这种消息的重试需要分2种,分别是producer端重试和consumer端重试。producer端重试生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败SyncProducer.javapackage com.woodie.rocket...原创 2020-03-20 02:28:14 · 497 阅读 · 0 评论 -
rocketMQ数据存储
RocketMQ中的消息数据存储,采用了零拷贝技术(使用 mmap + write 方式),文件系统采用 Linux Ext4 文件系统进行存储。消息数据的存储在RocketMQ中,消息数据是保存在磁盘文件中,为了保证写入的性能,RocketMQ尽可能保证顺序写入,顺序写入的效率比随机写入的效率高很多。RocketMQ消息的存储是由ConsumeQueue和CommitLog配合完成的,Com...原创 2020-03-19 07:16:06 · 1431 阅读 · 0 评论 -
rocketMQ重复消息的解决方案
重复消息的解决方案造成消息重复的根本原因是:网络不可达。只要通过网络交换数据,就无法避免这个问题。所以解决这个问题的办法就是绕过这个问题。那么问题就变成了:如果消费端收到两条一样的消息,应该怎样处理?消费端处理消息的业务逻辑保持幂等性 保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现第1条很好理解,只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样。如数据库Whe...原创 2020-03-19 06:55:26 · 1740 阅读 · 0 评论 -
rocketMQ消息模式(集群和广播)
消息模式DefaultMQPushConsumer实现了自动保存offset值以及实现多个consumer的负载均衡。//设置组名DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("HAOKE_IM");通过groupname将多个consumer组合在一起,那么就会存在一个问题,消息发送到这个组后,消息怎么分配呢?...原创 2020-03-19 06:42:15 · 3658 阅读 · 1 评论 -
rocketMQ之consumer的push和pull模式
push和pull模式在RocketMQ中,消费者有两种模式,一种是push模式,另一种是pull模式。push模式:客户端与服务端建立连接后,当服务端有消息时,将消息推送到客户端。pull模式:客户端不断的轮询请求服务端,来获取新的消息。但在具体实现时,Push和Pull模式都是采用消费端主动拉取的方式,即consumer轮询从broker拉取消息。区别:Push方式里,consum...原创 2020-03-19 05:14:11 · 2726 阅读 · 0 评论 -
rocketMQ消息的分布式事务
原理Half(Prepare) Message指的是暂不能投递的消息,发送方已经将消息成功发送到了 MQ 服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,处于该种状态下的消息即半消息。Message Status Check由于网络闪断、生产者应用重启等原因,导致某条事务消息的二次确认丢失,MQ 服务端通过扫描发现某条消息长期处于“半消息”时,需要主...原创 2020-03-18 06:31:28 · 108 阅读 · 0 评论 -
rocket顺序消息
顺序消息在某些业务中,consumer在消费消息时,是需要按照生产者发送消息的顺序进行消费的,比如在电商系统中,订单的消息,会有创建订单、订单支付、订单完成,如果消息的顺序发生改变,那么这样的消息就没有意义了。OrderConsumer.javapackage com.woodie.rocketmq.order;import org.apache.rocketmq.clien...原创 2020-03-18 06:15:48 · 136 阅读 · 0 评论 -
rocketMQ消息过滤器
RocketMQ支持根据用户自定义属性进行过滤,过滤表达式类似于SQL的where,如:a> 5 AND b ='abc'consumerFilter.javapackage com.woodie.rocketmq.filter;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import or...原创 2020-03-18 05:54:25 · 932 阅读 · 0 评论 -
rocket同步消息&异步消息
同步消息package com.woodie.rocketmq.sendmsg;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.SendResult;import org.apache.rocketmq.common.mess...原创 2020-03-18 05:45:23 · 279 阅读 · 0 评论 -
rocketMQ创建topic
package com.woodie.rocketmq.topic;import org.apache.rocketmq.client.exception.MQClientException;import org.apache.rocketmq.client.producer.DefaultMQProducer;/** * 测试手动创建topic */public clas...原创 2020-03-18 05:38:26 · 1677 阅读 · 0 评论 -
rocketMQ环境普通搭建&&通过docker环境搭建及测试
Producer消息生产者,负责产生消息,一般由业务系统负责产生消息。Consumer消息费者,负责消费消息,一般是后台系统负责异步消费。NameServer集群架构中的组织协调员,收集broker的工作情况,不负责消息的处理Broker(topic存在其中)是RocketMQ的核心负责消息的发送、接收、高可用等(真正干活的)需要定时发送自身情况到NameServer...原创 2020-01-29 18:49:09 · 449 阅读 · 0 评论 -
java代码测试rocketMQ的api
创建maven工程导入相关依赖 <dependencies> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId>...原创 2020-01-30 04:45:47 · 712 阅读 · 0 评论 -
rocketMQ搭建2m2s集群
通过docker搭建2master+2slave的集群1、server创建容器#创建server容器nameserver01docker create -p 9876:9876 --name rmqserver01 -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -e "JAVA_OPTS=-Duser.home=/opt" ...原创 2020-02-03 00:12:07 · 788 阅读 · 0 评论 -
SpringBoot整合RocketMq
引入依赖 <dependencies> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> &...原创 2020-02-03 04:28:28 · 517 阅读 · 0 评论