消息队列:RocketMQ 概念及下载安装

消息队列RocketMQ入门指南 本次的示例是关于订单系统改造,用户下单完成后,服务器需要进行库存扣减、订单状态更新、以及优惠券、积分等边边角角的业务,如果顺序执行这些逻辑+网络开销,接口耗时对于用户体验是非常不友好的。的开发者,这篇文章都将为你提供一个清晰的入门指南。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。,作为阿里巴巴开源的一款高性能、高可靠的分布式消息中间件,凭借其强大的功能和稳定的性能,成为了众多开发者和企业的首选。 阅读详情

一、消息中间件

消息:传递的信息。系统与系统之间通讯传递的信息。

中间件:redis就是一个数据存储的中间件。 独立于系统之外的一个应用都可以叫做中间件。

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者),broker(中间件)。

生产者: 发送消息

消费者:获取接收消息、并处理消息。

二、概述

RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

  • 能够保证严格的消息顺序

  • 提供丰富的消息拉取模式

  • 高效的订阅者水平扩展能力

  • 实时的消息订阅机制

  • 亿级消息堆积能力

RocketMQ单机也可以支持亿级的消息堆积能力。单机写入TPS单实例约7万条/秒,单机部署3个-,可以跑到最高12万条/秒,消息大小10个字节。

==市场上主流的消息中间件: RabbitMQ、RocketMQ、Kafka、==

三、核心概念

Name Server

  • NameServer的主要功能是为整个MQ集群提供服务协调与治理,具体就是记录维护Topic、Broker的信息,及监控Broker的运行状态。

  • 理解成zookeeper的效果,只是他没用zk,而是自己写了个nameserver来替代zk

  • 底层由netty实现,提供了路由管理、服务注册、服务发现的功能,是一个无状态节点

  • nameserver是服务发现者,集群中各个角色(producer、broker、consumer等)都需要定时向nameserver上报自己的状态,以便互相发现彼此,超时不上报的话,nameserver会把它从列表中剔除

  • nameserver可以部署多个,当多个nameserver存在的时候,其他角色同时向他们上报信息,以保证高可用,

  • NameServer集群间互不通信,没有主备的概念

  • nameserver内存式存储,nameserver中的broker、topic等信息默认不会持久化,所以他是无状态节点

Broker

  • 理解成RocketMQ本身

  • broker主要用于producer和consumer发送和接收消息

  • broker会定时向nameserver提交自己的信息

  • ==是消息中间件的消息存储、转发服务器==

  • 每个Broker与Name Server集群中的所有节点建立长连接,定时(每隔30s)注册Topic信息到所有Name Server。Name Server定时(每隔10s)扫描所有存活broker的连接,如果Name Server超过2分钟没有收到心跳,则Name Server断开与Broker的连接。

Producer

  • 消息的生产者

  • Producer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic路由信息,并向提供Topic服务的Broker Master建立长连接,且定时向Broker Master发送心跳。Producer完全无状态,可集群部署。

  • Producer每隔30s(由ClientConfig的pollNameServerInterval)从Name server获取所有topic队列的最新情况,这意味着如果Broker不可用,Producer最多30s + 120s能够感知,在此期间内发往Broker的所有消息都会失败。

  • Producer每隔30s(由ClientConfig中heartbeatBrokerInterval决定)向所有关联的broker发送心跳,Broker每隔10s中扫描所有存活的连接,如果Broker在2分钟内没有收到心跳数据,则关闭与Producer的连接。

Consumer

  • 消息的消费者

  • Consumer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic路由信息,并向提供Topic服务的Broker Master、Broker Slave建立长连接,且定时向Broker Master、Broker Slave发送心跳。Consumer既可以从Broker Master订阅消息,也可以从Broker Slave订阅消息,订阅规则由Broker配置决定。

  • Consumer每隔30s从Name server获取topic的最新队列情况,这意味着Broker不可用时,Consumer最多最需要30s + 120s才能感知。

  • Consumer每隔30s(由ClientConfig中heartbeatBrokerInterval决定)向所有关联的broker发送心跳,Broker每隔10s扫描所有存活的连接,若某个连接2分钟内没有发送心跳数据,则关闭连接;并向该Consumer Group的所有Consumer发出通知,Group内的Consumer重新分配队列,然后继续消费。

Topic

  • Topic翻译为主题。我们可以理解为消息类型

  • 比如一个电商系统的消息可以分为:交易消息、物流消息等,一条消息必须有一个Topic。

Queue

  • ==一个topic下,可以设置多个queue(消息队列),默认4个队列。==

  • 当我们发送消息时,需要要指定该消息的topic。RocketMQ会轮询该topic下的所有队列,将消息发送出去。

  • 在 RocketMQ 中,所有消息队列都是持久化,长度无限的数据结构,所谓长度无限是指队列中的每个存储单元都是定长,访问其中的存储单元使用 Offset 来访问,offset 为 java long 类型,64 位,理论上在 100年内不会溢出,所以认为是长度无限。也可以认为 Message Queue 是一个长度无限的数组,Offset 就是下标。

四、RocketMQ下载与安装

1、创建一个本地文件夹

mkdir  /usr/local/rocketmq

2、安装 Namesrv ,拉取镜像

docker pull rocketmqinc/rocketmq:4.4.0

3、启动namesrv

docker run -d -p 9876:9876  -v /usr/local/rocketmq/data/namesrv/logs:/root/logs  -v /usr/local/rocketmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

4、 安装 broker 服务器

        (1) 在 usr/local/rocketmq/创建conf 目录,并在conf下创建 broker.conf 文件

#创建目录
mkdir /usr/local/rocketmq/conf


#创建文件broker.conf文件
cd /usr/local/rocketmq/conf
vim broker.conf


#把文件内容拷贝到文件上
brokerClusterName = DefaultCluster
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = XXX.XXX.XX.XXX(自己的linux机器的ip地址)
brokerName = broker-tanhua

        (2)安装brokerServer容器, 启动broker

docker run -d -p 10911:10911 -p 10909:10909 -v  /usr/local/rocketmq/data/broker/logs:/root/logs -v  /usr/local/rocketmq/rocketmq/data/broker/store:/root/store -v  /usr/local/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

此时可以用docker ps 查询一下namesrv和broker是否启动

5、安装 rocketmq 控制台 ,拉取镜像

docker pull styletang/rocketmq-console-ng

#这里ip地址要修改成你自己的linux的ip

docker run -di  --name=rocketmq-console-ng -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=xxx.xxx.xx.xxx:9876 -Drocketmq.config.isVIPChannel=false -Duser.timezone='Asia/Shanghai'" -v /etc/localtime:/etc/localtime -p 8001:8080 -t styletang/rocketmq-console-ng

8001是映射的端口,可自行设置。启动后可以在浏览器打开:http://mq主机ip:映射端口

到此,rocketmq服务已启动,相应的控制台项目也启动了。

五、Springboot整合RocketMQ

1、生产者工程

        创建项目rocket_producer,添加rocketmq-spring-boot-starter等依赖包


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

        创建启动引导类

package cn.itcast;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

        编写application.yml配置文件

rocketmq:
  name-server: 192.168.75.128:9876
  producer:
    #生产组的名字是可以随意的,主要保证消息的高可用
    group: tanhua
   #设置发送消息的超时时间
    send-message-timeout: 5000

        编写测试类,通过RocketMQTemplate发送消息

package cn.itcast.test;

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class AppTest {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;


    @Test
    public void test01(){
        /**
         * 参数一: 消息的主题
         * 参数二:消息的内容
         */
        rocketMQTemplate.convertAndSend("topic","rocketmq发送消息");
    }

}

2、消费者工程

        导入依赖

     <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
        </dependency>
    </dependencies>

        创建启动引导类

package cn.itcast;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RocketConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(RocketConsumerApplication.class, args);
    }
}

        编写配置文件

rocketmq:
  name-server: xxx.xxx.xx.xxx:9876

#ip地址这里要修改成自己linux的ip

        编写消息监听器,实现RocketMQListener接口         

package cn.itcast.listener;

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

@Component //创建消息监听器的对象
//指定监听的主题并且指定消费组,消费的主题一定要与生产主题要一致,
// 消费者的名字可以随意的,我们一般一个主题对应一个消费组, 一个消息可以被不同的消费组消费多次的。同一个消费组只会消费一次同一个消息
@RocketMQMessageListener(topic = "topic",consumerGroup = "group2")
public class MyMessageListener implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        System.out.println("监听到的消息:"+message);
    }
}

六、消息类型

消息的生产者:分别发送默认同步消息、同步消息、异步消息。

|-- RocketMQTemplate

|-- convertAndSend() 默认同步消息, 没有返回结果

|-- syncSend() 发送同步消息, 可以获取消息返回结果(回执)

|-- asyncSend() 发送异步消息

|-- sendOneWay() 直接发送消息,不会等待应答

1、在实际使用场景中,利用何种发送方式,可以总结如下:

  • 当发送的消息不重要时,采用one-way方式,比如:物流实时消息,以提高吞吐量;

  • 当发送的消息很重要,而且下一步必须使用上一步的操作结果. ,同步消息 结算---跳转对应结算清单页面

  • 当发送的消息很重要,且对响应时间非常敏感的时候采用async方式;,发送优惠券

方式

速度

返回结果

可靠性

同步快有不丢失消息
异步更快有不丢失消息
单向(直接发送)最快无可能丢失消息

七、顺序消息

在MQ的模型中,顺序需要由3个阶段去保障:
    1.消息被发送时保持顺序
    2.消息被存储时保持和发送的顺序一致
    3.消息被消费时保持和存储的顺序一致

 @Test
    public void sendOrderMessage(){
        //1. 得到消息
        List<Order> orderList = Order.buildOrders();

        //2. 消息的队列选择器 作用:指定消息进入到指定的队列中。
        rocketMQTemplate.setMessageQueueSelector(new MessageQueueSelector() {
            /**
             * select方法调用时机: 每发送一个消息的时候都会触发这个方法,这个方法的返回值代表了该消息进入的队列
             * @param list   当前主题下的所有队列
             * @param message  消息的内容
             * @param o    消息的标识符
             * @return
             */
            @Override
            public MessageQueue select(List<MessageQueue> list, Message message, Object o) {
                //1. 得到消息的标识
                int orderId = Integer.parseInt((String) o);
                //2. 根据订单号算出该订单存储的队列索引号
                int index = orderId%list.size(); // 4%4 =0  5%4 = 1
                return list.get(index);
            }
        });

        //3. 遍历消息集合,发送消息
        for (Order order : orderList) {
            /**
             * 参数一: 消息的主题
             * 参数二: 消息的内容
             * 参数三: 消息的唯一标识
             */
            rocketMQTemplate.syncSendOrderly("order_topic",order.toString(),order.getId()+"");
        }
    }

RocketMq和RabbitMq的对比【主流消息队列】 首先整理这个文章是因为我正好有机会实战了一下rocketmq,的一个开源消息中间件。所以就与以往中rabbitmq进行小小的比较一下。这里主线的根据常见面试问题进行整理。 阅读详情

相关推荐

RocketMQ 的介绍及核心概念讲解

消息队列是一种用于在分布式系统中进行通信的技术,它是一种存储和转发消息的中间件,可以用于将应用程序之间的通信解耦,从而实现高效的异步通信,消息队列允许发送者将消息发送到队列中,而接收者则可以从队列中获取消息并进行处理,这种方式可以帮助系统实现高可用性、高性能、松耦合和可伸缩性,消息队列通常包括生产者(发送消息的应用程序)、消费者(接收消息的应用程序)和队列(存储消息的缓冲区),常见的消息队列有 Kafka、RocketMQ、RabbitMQ、Redis 等。如有不正确的地方欢迎各位指出纠正。

weixin_42118323的博客 1269

RocketMq

RocketMQ 是什么 Github 上关于 RocketMQ 的介绍: RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性: 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 支持拉(pull)和推(push)两种消息模式 单一队列百万消息的堆积能力 支持多种消息协议,如 JMS、MQTT 等 分布式高可用的部署架构,满足至少一次消息传递语义 提供 docker 镜像用于隔离测试和云集群部署

weixin_45105259的博客 2176

RocketMQ的介绍以及部署

RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。目前RocketMQ在阿里云上有一个购买即可用的商业版本,商业版本集成了阿里内部一些更深层次的功能及运维定制。RocketMQ的官网地址: http://rocketmq.apache.orgGithub地址是https://github.com/apache/rocketmq。

江晓龙的博客 1万+

一文理解RocketMQ

通过本文能够比较全面的了解RocketMQ的工作原理,docker-compose搭建RocketMQ集群以及简单的Demo代码

追梦格林 1437

vue使用 APlayer+Meting实现音乐播放,支持多平台音乐:网易云、腾讯、虾米、酷狗、百度

  我之前写过一篇博客:使用 APlayer 实现音乐播放器,虽然 APlayer 让我实现了想要的音乐播放器效果,但是音频列表 audio 的音频链接、音频封面、歌词等,是需要自己去补充的。   那么这些数据从哪里来呢?   我昨天有发愁一会儿会儿,也去搜了获取音乐列表的接口,可以发请求去获取数据嘛。   也有瞅见MetingJS,A powerful plugin connect APlayer and Meting,一个连接APlayer和Meting的功能强大的插件,附上GitHub地址:https

小R.的博客 4796

TP4056在单节锂电池充电管理中的创新应用与电路优化

本文深入探讨了TP4056线性充电管理芯片在单节锂电池充电电路中的创新应用与优化方案。针对“边充边用”的核心挑战,文章详细解析了利用PMOS管构建智能供电切换电路的原理,实现了外部电源与电池供电的无缝、安全切换,有效杜绝了电池“边充边放”的风险。同时,提供了关键的元器件选型、PCB布局布线技巧及常见问题排查指南,为创客和硬件开发者提供了高性价比、高可靠性的锂电池电源管理实践方案。

rock5的博客 501

分布式消息队列RocketMQ详细下载安装教程

MQ,一种提供消息队列服务的中间件,也称为消息中间件,是一套提供消息生产,存储,消费的全过程API软件系统。消息就是数据。1.限流削峰:先把系统超量的请求暂存在MQ中,以便系统后期慢慢处理,避免请求的丢失或系统被压垮。2.异步解耦:由同步转化为异步,在两层之间添加一个MQ,提高系统的吞吐量和并发度,解耦。3.数据收集:分布式系统会产生海量级数据流,如:业务日志,监控数据,用户行为等,对数据进行实时或批量采集汇总,进行大数据分析,MQ是很好的选择。

weixin_45703155的博客 1762

双系统引导修复:GRUB消失后恢复Windows与Ubuntu启动菜单

在UEFI引导架构下,操作系统启动依赖于EFI系统分区(ESP)中存储的引导加载程序。当多个系统共存时,引导管理器负责识别并加载不同操作系统的引导文件。然而,Windows更新或系统调整时常会重置UEFI启动顺序,导致GRUB引导菜单消失,直接进入Windows。这一问题的技术价值在于理解UEFI启动流程与多系统引导管理机制,掌握ESP分区结构与引导文件修复方法。常见的应用场景包括双系统安装后的引导修复、系统更新后的启动项丢失以及磁盘分区调整导致的引导故障。本文针对**GRUB引导菜单消失**和**UEFI

weixin_29895109的博客 292

RocketMQ基本介绍及Docker安装

1.介绍1.1 RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 (RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证) 支持拉(pull)和推(push)两种消息模式: pull其实就是消费者主动从MQ中去拉消息,而push则像rabbit MQ一样,是MQ给消费者推送消息。但是RocketM....

weixin_39643007的博客 3210

如何在 FPGA 中做数学运算

FPGA 非常适合进行数学运算,但是需要一点技巧,所以我们今天就看看如何在 FPGA 中进行简单和复杂的数学运算。介绍由于FPGA可以对算法进行并行化,所以FPGA 非常适合在可编程逻辑中实现数学运算。我们可以在 FPGA 中使用数学来实现信号处理、仪器仪表、图像处理和控制算法等一系列应用。这意味着 FPGA 可用于从自动驾驶汽车图像处理到雷达和飞机飞行控制系统的一系列应用。因为 FPGA 寄存器...

OpenFPGA的博客 2914

Orange3实战教程:文本挖掘---主题建模

主题建模通过LDA、LSI或HDP算法分析文档集合,自动发现隐含主题结构。组件输入为文档语料库,输出包括带主题权重的语料库、主题词分布及完整主题数据。不同算法特性各异:LSI允许正负权重但解释性较弱,LDA更易解释,HDP参数复杂需谨慎设置。结果可结合词云、热力图等可视化工具分析主题特征及分布。示例显示如何通过预处理文本、选择算法(如提取5个LDA主题),并利用MDS和箱线图探索主题间关系及关键词分布。

err2008的专栏 361

SpringBoot定时监听RocketMQ的NameServer

【代码】SpringBoot定时监听RocketMQ的NameServer。

starjuly的专栏 789

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4592

RocketMQ消息队列的核心概念以及部署搭建

RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。目前RocketMQ在阿里云上有一个购买即可用的商业版本,商业版本集成了阿里内部一些更深层次的功能及运维定制。RocketMQ的官网地址: rocketmq.apache.orgGithub地址是github.com/apache/rock…

weixin_74412978的博客 715

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

前程算法屋的博客 851

基于 Qt C++ 的 船舶导航系统 UI

你想实现一个基于 **Qt C++** 的 **船舶导航系统 UI**,核心功能包括 **Qt Quick** 电子海图显示和 **NMEA 0183** 协议解析。"断开" : "连接"创建一个 Qt Quick 项目,选择 **Qt 6** 版本,确保勾选 **Qt Quick**、**Qt Network** 和 **Qt SQL** 模块。Label { text: "纬度:" }3. **连接设备**:点击 "连接" 按钮连接到 GPS 设备或模拟数据源。title: "连接设置"

寒寒豆豆软件公司的博客 127

RocketMQ分布式消息队列

MQ全称为Message Queue,即消息队列 ,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程的软件系统,遵循FIFO原则。

qq_33878489的博客 325

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RocketMQ内容分享(一):初识、部署、集群搭建

RocketMQ是阿里巴巴开源的一款消息队列,它具有低延迟,高吞吐量,高可靠性等特点。目前,RocketMQ在阿里巴巴内部有着广泛的应用,经历多次双十一的洗礼,RocketMQ的可靠性非常高。前文对RocketMQ的基本概念做了一些介绍,本文将小试牛刀一下。本文主要讲述如何通过docker来部署单机版的RocketMQ。部署RocketMQ的最核心是部署nameserver以及部署broker。然后,我们还需要安装可视化界面,在RocketMQ的官网上提供的是基础的安装方式。

之乎者也·的博客 1522

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

消息队列RocketMQ基础入门

一、MQ简介 1、消息队列需求场景 在基于微服务开发的电商项目中,商品的查询和商品的修改是通过两个服务实现的,如果修改了商品的价格,如何保证商品查询服务查询出来的商品价格同步更新呢? 服务与服务之间的通信方式有两种:同步调用和异步消息调用 同步调用:远程过程调用,REST和RPC 异步消息调用:消息队列 1)、为了保证数据的一致性,当“商户商品修改服务”在完成对A库中商品信息的修改之后,需要调用“商户商品查询服务”及“自媒体商品查询服务”同步完成B库及C库中商品信息的修改; 2)、如果“商户商品修改服

java编程学习_java基础教程_booyzhang的博客 1202

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

分布式消息队列RocketMQ概念详解

RocketMQ,Java

qq_43649937的博客 9545

RocketMQ的一万字全面总结,带你快速入门消息队列

消息队列是后端开发进阶必备知识,而RocketMQ作为消息队列的热门选型,更是值得认真研究。本篇从消息队列基本概念、应用场景说起,详细深入地探究RocketMQ,从Topic、队列、生产者、消费者等领域模型到消息的全生命周期,再到消息重复问题、消息防丢失、消息有序性等常见问题全面覆盖,简洁明了,浅显易懂。

云深不知处 4561

【消息队列RocketMQ】一、RocketMQ入门核心概念与架构解析

本文详细介绍了消息队列的核心概念、RocketMQ 的架构设计,以及在 CentOS 7 操作系统上的安装配置过程。通过学习,读者对 RocketMQ 的基础入门知识有了全面的了解,包括消息队列的应用场景、RocketMQ 各组件的功能和交互流程,以及如何在 CentOS 7 上搭建 RocketMQ 环境。后续,读者可以进一步深入学习 RocketMQ 的高级特性和实际应用,将其应用到实际的项目开发中,发挥 RocketMQ 在分布式系统中的重要作用。​

qq_58611691的博客 1151

RocketMQ - RocketMQ是什么?一篇看懂分布式消息队列核心概念

本文介绍了分布式消息队列RocketMQ的核心概念与架构。RocketMQ由阿里巴巴开源,具备高吞吐、低延迟、高可用等特点,广泛应用于电商、金融等领域。文章解析了其四大核心组件:NameServer(注册中心)、Broker(消息服务器)、Producer(生产者)和Consumer(消费者),并详细说明了Topic、MessageQueue、Tag等核心概念。通过Mermaid架构图展示了RocketMQ集群部署方式,最后提供了本地快速启动指南。RocketMQ作为Apache顶级项目,是构建分布式系统的

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

读懂消息队列:Kafka与RocketMQ

3月份学完了极客时间的《消息列队高手课》专栏,专栏讲解了许多消息队列的基础知识并且对Kafka与RocketMQ两种主流消息队列有精彩的对比分析。学完专栏后将所有要点整理为笔记记录下来。

Hopefully Sky的博客 1万+

消息队列之RocketMQ

在当今的分布式系统和微服务架构中,消息队列扮演着至关重要的角色。它们提供了可靠的异步通信和消息传递机制,使得不同的系统组件能够协调工作,提高了系统的可靠性、可扩展性和性能。在众多的消息队列中,RocketMQ 以其高性能、高可靠性和丰富的特性脱颖而出。它是由阿里巴巴开源的一款分布式消息中间件,经过了大规模生产环境的验证,被广泛应用于各种行业和场景。在本博客中,我将深入探讨 RocketMQ 的核心概念、工作原理、安装部署以及实际应用。

liubopro666的博客 1301

消息队列——RocketMQ

MQ 全称(Message Queue)又名消息队列,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程 API的软件系统(消息即数据)。通俗点说,就是一个先进先出的数据结构。

m0_68965466的博客 1158
上一篇: 二、Spring中AOP的原理及用法(基础理解)
下一篇: Nacos与Zookeeper对比
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值