RocketMQ第四章:手把手教老婆实现-顺序消息生产者和顺序消息消费者(2)

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

  1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;
  2. 项目经历:只写明星项目,描述遵循 STAR 法则;
  3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取


目录

第一节:介绍

顺序消息含义介绍

原理解析

第二节:顺序消息-生产者和消息者步骤说明

顺序消息生产者代码实现步骤

顺序消息消费者代码实现步骤

第三节:顺序消息生产者

效果:

第四节:顺序消息消费者

效果:


第一节:介绍

======

顺序消息含义介绍


顺序消息指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序。

原理解析


在默认的情况下消息发送会采取Round Robin轮询方式把消息发送到不同的queue(分区队列);

而消费消息的时候从多个queue上拉取消息,这种情况发送和消费是不能保证顺序。

但是如果控制发送的顺序消息只依次发送到同一个queue中,消费的时候只从这个queue上依次拉取,则就保证了顺序。如下图所示:

当发送和消费参与的queue只有一个,则是全局有序;如果多个queue参与,则为分区有序,即相对每个queue,消息都是有序的。

第二节:顺序消息-生产者和消息者步骤说明

====================

顺序消息生产者代码实现步骤


1.创建消息生产者producer并制定生产者组名

2.指定Nameserver地址

3.启动producer

4.创建消息对象,指定主题Topic、Tag和消息体

5.发送消息,选择的send方法有三个参数:

  • * 参数一:消息对象

  • * 参数二:消息队列的选择器

  • * 参数三:选择队列的业务标识 6.关闭生产者producer

顺序消息消费者代码实现步骤


1.创建消费者Consumer,制定消费者组名

2.指定Nameserver地址

3.订阅主题Topic和Tag

4.设置回调函数,处理消息:与普通消息的差别,这里用的是MessageListenerOrderly

5.启动消费者consumer

注意:消费者的 Topic 和 Tag 需要和生产者保持一致

第三节:顺序消息生产者

===========

public class Producer {

public static void main(String[] args) throws Exception {

// 1.创建消息生产者producer,并制定生产者组名

DefaultMQProducer producer = new DefaultMQProducer(“demo_producer_order_group”);

// 2.指定Nameserver地址

producer.setNamesrvAddr(“192.168.88.131:9876”);

// 3.启动producer

producer.start();

System.out.println(“生产者启动”);

for (int i = 0; i < 20; i++) {

// 4.创建消息对象,指定主题Topic、Tag和消息体

Message msg = new Message(“Topic_order_demo”, “Tag_order_demo”,

(“Hello 虚竹,这是顺序消息” + i).getBytes(RemotingHelper.DEFAULT_CHARSET));

// 5.发送消息

/**

  • 参数一:消息对象

  • 参数二:消息队列的选择器

  • 参数三:选择队列的业务标识

*/

SendResult result = producer.send(msg, new MessageQueueSelector() {

/**

  • @param mqs:队列集合

  • @param msg:消息对象

  • @param arg:业务标识的参数

  • @return

*/

@Override

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

[外链图片转存中…(img-AJYf69T9-1715462928735)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值