
RocketMQ
文章平均质量分 61
从实战的角度介绍RocketMQ,通过本教程可以学会使用RocketMQ收发消息、带Key的消息、延时消息等。可以了解集群消息消费与广播消息消费的区别;对消息的推模式和拉模式有一个了解;可以学习到RocketMQ的高可用配置,以及跟Spring Boot、Spring Cloud整合的用法。
elim168
这个作者很懒,什么都没留下…
展开
-
RocketMQ(20)——整合Spring Boot
Apache RocketMQ提供了对Spring Boot的支持,目前最新的整合版本使用的是RocketMQ4.5.1版本,使用Spring Boot是2.0.5版本。整合Spring Boot需要引入rocketmq-spring-boot-starter依赖,目前最新版本是2.0.3。原创 2022-09-19 22:58:35 · 666 阅读 · 1 评论 -
RocketMQ(19)——mqadmin简介
在RocketMQ安装目录的bin目录下有一个mqadmin指令,该指令可以用来对RocketMQ进行一些管理。原创 2022-09-19 22:50:20 · 697 阅读 · 0 评论 -
RocketMQ(18)——高可用配置
RocketMQ的核心概念中有Name Server和Broker,它们充当服务端,作为客户端生产者和消费者都需要和它们不断的进行交互。如果你的Name Server和Broker只有一台机器,并且挂了,那么与它们交互的这条路就断了。而如果作为客户端的生产者和消费者只有一台,而且挂了,那这个是属于业务问题,且对应的消息已经在Broker持久化了,下次消费者启动后可以继续消费,而且这块通常也会部署为多节点。所以对于RocketMQ的高可用,主要还是Name Server和Broker的高可用。原创 2022-09-16 23:40:29 · 618 阅读 · 0 评论 -
RocketMQ(17)——Broker可配置参数
之前使用Broker都是通过`mqbroker -n localhost:9876`启动Broker,同时指定对应的Name Server地址是`localhost:9876`。其实它还可以指定一些其它的信息。原创 2022-09-13 18:30:00 · 2227 阅读 · 0 评论 -
RocketMQ(16)——Name Server可配置参数介绍
Name Server是通过RocketMQ的bin目录下的mqnamesrv指令启动的,之前介绍的都是不带任何参数直接启动的,实际上该指令还可以带一些参数。原创 2022-09-12 22:36:22 · 1587 阅读 · 0 评论 -
RocketMQ(15)——RocketMQ控制台
RocketMQ Console的顶部一共有8个菜单,OPS可以对控制台进行一些配置,主要是指定需要连接的NameServer的地址。可以通过某个Broker右边的Operation列中的STATUS按钮查看Broker的一些运行时信息,通过CONFIG按钮可以查看该Broker的配置信息。Message菜单可以从Topic、消息Key、消息ID三个维度来查询消息,查询完消息后可以查看消息的详细信息,也可以控制消息重新发送。该界面可以查看到所有的Topic信息,包括系统的一些Topic。原创 2022-09-06 23:18:33 · 3818 阅读 · 0 评论 -
RocketMQ(14)——发送带Key的消息
如果业务里面的某一条消息有问题,通过Topic查询出来的是一堆的消息,虽然说可以通过时间范围查找,但是在某个时间范围内的消息有可能也成千上万,很难找到业务对应的那条。而通过Key进行查找的时候,Key就是我们的业务ID,很容易获得,Key往往是唯一的,那么查询出来的消息也将是唯一的那条。比如下面代码一共发送了10条消息,第一条消息的Key是0、1、2,第二条消息的Key是1、2、3,最后一条消息的Key是9、10、11。发送消息的时候可以指定一个Key,这个Key通常就是消息对应的某种业务的主键。原创 2022-09-06 22:53:37 · 1919 阅读 · 0 评论 -
RocketMQ(13)——指定NameServer的四种方式
无论是生产者还是消费者,对于NameServer来讲它们都是客户端,它们都需要与NameServer进行连接,可以有四种方式指定需要连接的NameServer的地址。原创 2022-09-06 22:50:59 · 725 阅读 · 0 评论 -
RocketMQ(12)——生产者介绍
RocketMQ的消费者有基于拉模式的DefaultMQPullConsumer和基于推模式的DefaultMQPushConsumer。而对于生产者而言基本上只有一个DefaultMQProducer,和一个支持事务的TransactionMQProducer。TransactionMQProducer继承自DefaultMQProducer,所以DefaultMQProducer有的功能TransactionMQProducer都有。原创 2022-09-05 22:08:40 · 689 阅读 · 0 评论 -
RocketMQ(11)——消费者拉模式和推模式
RocketMQ提供了两种消息的消费模式,拉模式和推模式。我们先来看一下拉模式消费的应用。原创 2022-09-05 20:09:50 · 3445 阅读 · 0 评论 -
RocketMQ(10)——发送延时消息
指定一个消息的延时等级即可。RocketMQ内部定义了18个等级,分别是1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h,分别对应于1-18,所以如果一条消息需要延时1分钟,需要指定delayLevel为5,延时10分钟,则指定delayLevel为14。下面代码可以用来验证一下这10条消息是不是真的延时消费了,通过实际输出的结果会看到从消费到产生的时间间隔与上面delayLevel上描述的基本一致,差的一点毫秒数在于消息传递上的耗时。原创 2022-09-04 23:33:07 · 1508 阅读 · 0 评论 -
RocketMQ(09)——发送事务消息
发送事务消息RocketMQ支持发送事务消息,它的事务消息是基于二阶段提交机制实现的。当发送的消息是事务消息时,只有对应的消息被提交了才能被消费者进行消费。发送事务消息时生产者需要使用TransactionMQProducer,它还需要指定一个TransactionListener。TransactionListener接口的定义如下。public interface TransactionL...原创 2020-03-10 17:48:38 · 2191 阅读 · 0 评论 -
RocketMQ(08)——日志输出到RocketMQ
日志输出到RocketMQRocketMQ对常用的几种日志输出框架都定义了一个日志输出实现,使对应的日志信息作为一条消息发送到RocketMQ。要使日志输出信息能够发送到RocketMQ,需要添加rocketmq-logappender依赖。<dependency> <groupId>org.apache.rocketmq</groupId> ...原创 2020-03-10 17:46:58 · 4865 阅读 · 0 评论 -
RocketMQ(07)——消费者通过用户属性进行过滤
消费者通过用户属性进行过滤生产者在发送消息的时候可以通过Message的putUserProperty()放Message中放一些用户自定义属性,比如下面这样。@Testpublic void testFilterSend() throws Exception { DefaultMQProducer producer = new DefaultMQProducer("group1");...原创 2020-03-10 17:44:32 · 3538 阅读 · 2 评论 -
RocketMQ(06)——消息的批量发送和消费
消息的批量发送和消费发送生产者进行消息发送时可以一次发送多条消息,这对于体积比较小的消息而言会大大改善性能,可以想象原本发送10条消息需要传递10次,现在只需要传递一次。这可以通过调用send()时传递一个消息集合。比如下面这样。批量发送的消息必须拥有相同的Topic,且一次发送的消息的body的总体积不能超过4MB,否则会得到异常——org.apache.rocketmq.client.ex...原创 2020-03-08 00:15:52 · 6932 阅读 · 0 评论 -
RocketMQ(05)——消息的群集消费和广播消费
消息的群集消费和广播消费RocketMQ的消费者进行消息消费时有两种消费方式,群集消费和广播消费。默认是群集消费。群集消费Consumer都有一个Group,当两个Consumer实例属于同一个Group时,它们会共享消息队列中的消息消费位移,即同一条消息只会由一个消费者实例消费。实际上一个队列只会分配给一个消费者实例,那么属于该队列中的消息就只能被一个消费者实例消费了。当一个消费者实例挂了...原创 2020-02-02 00:17:24 · 2232 阅读 · 0 评论 -
RocketMQ(04)——发送顺序消息
发送顺序消息如果你的业务上对消息的发送和消费顺序有较高的需求,那么在发送消息的时候你需要把它们放到同一个消息队列中,因为只有同一个队列的消息才能确保消费的顺序性。下面代码我们在发送消息的时候,调用的是需要传递MessageQueueSelector的send(),该方法还可以传递一个额外的参数,其对应MessageQueueSelector的select()的最后一个参数。下面代码中我们一共发送...原创 2020-01-19 23:24:54 · 2245 阅读 · 0 评论 -
RocketMQ(03)——通过Tag对消息分类
通过Tag对消息分类RocketMQ建议一个业务系统只使用一个Topic,不同类型的消息通过tag来区分。tag可以在构造Message的时候指定,下面代码就指定了发送的消息的tag都为tag0。@Testpublic void sendWithTag() throws Exception { DefaultMQProducer producer = new DefaultMQProdu...原创 2019-12-28 19:38:30 · 10234 阅读 · 0 评论 -
RocketMQ(02)——发送消息的三种方式
发送消息的三种方式同步发送Producer在进行消息发送时可以是阻塞的,也可以是非阻塞的。具体对应到发送方式一共有三种,分别是同步、异步和单向的(ONEWAY)。之前介绍的调用send()返回SendResult的方法是阻塞的,它一定要等到Broker进行了响应后才会返回,才能继续往下执行。对于下面的代码就是只有第一条消息发送完了后,才能发送第二条消息,接着是第三条。这种阻塞发送的方式也叫同步...原创 2019-12-27 23:36:20 · 3091 阅读 · 0 评论 -
RocketMQ(01)——简介
RocketMQ简介笔者使用的是Apache RocketMQ,官网是http://rocketmq.apache.org/。RocketMQ是Alibaba开源的一个分布式消息队列,可以通过http://rocketmq.apache.org/dowloading/releases/下载当前最新的版本。下载后解压缩,然后通过bin/mqnamesrv启动一个Name Server,它默认监听在...原创 2019-12-07 23:49:03 · 1685 阅读 · 0 评论