RocketMQ
文章平均质量分 92
RocketMQ
Fisher3652
这个作者很懒,什么都没留下…
展开
-
RocketMQ 10:整合springboot
1.创建一个新的springboot工程,引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven原创 2020-07-04 10:35:00 · 143 阅读 · 0 评论 -
RocketMQ 9:事务消息
1.事务消息实现思想RocketMQ 事务消息,是指发送消息事件和其他事件需要同时成功或同失败。比如银行转账, A 银行的某账户要转一万元到 B 银行的某账户。A 银 行发送“B 银行账户增加一万元” 这个消息,要和“从 A 银行账户扣除一万元”这个操作同时成功或者同时失败。RocketMQ 采用两阶段提交的方式实现事务消息,TransactionMQProducer 处理上面情况的流程是,先发一个“准备从 B 银行账户增加一万元”的消息, 发送成功后做从 A 银行账户扣除一万元的操作 ,根据操作原创 2020-07-02 17:52:25 · 204 阅读 · 0 评论 -
RocketMQ 8:延时消息
1.Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费, 该消息即延时消息。适用场景: 消息生产和消费有时间窗口要求:比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在 30 分钟以 后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。 如支付未完成,则关闭订单。如已完成支付则忽略。“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m原创 2020-07-01 18:39:55 · 265 阅读 · 0 评论 -
RocketMQ 7:部分顺序消息
1.使用Tag区分同一个Topic下的不同Queue2.创建生产者ProducePartOrder,使用selector选择器控制消息往哪个queue发package org.example.orderMessage.part;import org.apache.rocketmq.client.producer.DefaultMQProducer;import org.apache.rocketmq.client.producer.MessageQueueSelector;import or原创 2020-07-01 18:18:48 · 187 阅读 · 0 评论 -
RocketMQ 6:全局顺序消息
1.RocketMQ 在默认情况下不保证顺序,要保证全局顺序,需要把 Topic 的读写队列数设置为 1,然后生产者和消费者的并发设置也是 1,不能使用多线程。所以这样的话 高并发,高吞吐量的功能完全用不上。适用于性能要求不高,所有的消息严格按照 FIFO 原则来发布和消费的场景。在mq的bin目录下,执行./mqadmin updateTopic -t AllOrder -c DefaultCluster -r 1 -w 1 -n 127.0.0.1:9876,将AllOrder修改为只有一个que原创 2020-07-01 17:59:07 · 1752 阅读 · 0 评论 -
RocketMQ 5:消息重试
1.创建消费者RetryConsumer,使用consumer.setMaxReconsumeTimes()方法可以设置重试次数,默认15次,返回ConsumeConcurrentlyStatus.RECONSUME_LATER;package org.example.retry;import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import org.apache.rocketmq.client.consumer.li原创 2020-07-01 16:24:02 · 860 阅读 · 0 评论 -
RocketMQ 4:批量发送
消息发送的主要流程:验证消息、查找路由、消息发送(包含异常机制)验证消息:主要是要求主题名称、消息体不能为空、消息长度不能等于 0,且不能超过消息的最大的长度 4M(生产者对象中配置 maxMessageSize=102410244)查找路由:客户端(生产者)会缓存 topic 路由信息(如果是第一次发送消息,本地没有缓存,查询 NameServer 尝试获取),路由信息主要包含了 消息队列(queue 相关信息)消息发送:选择消息队列,发送消息,发送成功则返回。1.创建生产者BatchProduc原创 2020-06-27 22:22:26 · 877 阅读 · 0 评论 -
RocketMQ 3:消费者-拉模式
拉模式代码上使用 DefaultMQPullConsumer使用方式类似,但是更加复杂,除了像推模式一样需要设置各种参数之外,还需要处理额外三件事情:1)获取 MessageQueues 并遍历(一个 Topic 包括多个 MessageQueue),如果是特殊情况,也可以选择指定的 MessageQueue 来读取消息2)维护 Offsetstore,从一个 MessageQueue 里拉取消息时,要传入 Offset 参数,随着不断的读取消息,Offset 会不断增长。这个时候就需要用户把 Of原创 2020-06-27 21:59:16 · 791 阅读 · 0 评论 -
RocketMQ 2:集群消费、广播消费-推模式
推模式代码上使用 DefaultMQPushConsumer这种模型下,系统收到消息后自动调用处理函数来处理消息,自动保存 Offset,并且加入新的消费者后会自动做负载均衡。底层实现上,推模式还是使用的 pull 来实现的,pull 就是拉取,push 方式是 Server 端接收到消息后,主动把消息推给 Client 端,实时性高。但是使用 Push 方式有很多弊端,首先加大 Server 端的工作量,其次不同的 Client 端处理能力不同,Client 的状态不受 Server 控制,如果 C原创 2020-06-27 19:51:17 · 481 阅读 · 0 评论 -
RocketMQ 1:生产者消息发送-单向发送、同步发送、异步发送
目录1.创建一个空的maven工程,引入rocket依赖单向发送2.创建单向发送类OneWayProducer3.查看打印同步发送4.创建同步发送类SyncProducer5.查看打印,消息按顺序发送,Queue 是数据分片的产物,默认是4个,可以修改配置参数defaultTopicQueueNums异步发送6.创建异步发送类AsyncProducer,使用countDownLatch保证10条消息同时发送,并打印反馈结果7.查看打印,因为是异步发送,所以顺序每次都会不一样1.创建一个空的maven工程原创 2020-06-27 18:19:24 · 973 阅读 · 0 评论 -
RocketMQ在Linux下安装+可视化插件安装
1.官方下载地址http://rocketmq.apache.org/dowloading/releases/本次安装使用4.4.0版本rocketmq-all-4.4.0-bin-release.zip,安装环境需要jdk1.82.将下载的安装包上传到服务器3.解压,unzip rocketmq-all-4.4.0-bin-release.zip4.进入conf目录修改配置文件broker.conf,指定本机的ip,也可以不指定,默认localhost5.进入bin目录,修改runs原创 2020-06-27 16:50:16 · 1388 阅读 · 0 评论