RocketMq消息队列实施计划方案_完整版

合集下载

RocketMQ事务消息实现分析

RocketMQ事务消息实现分析

RocketMQ事务消息实现分析这张图说明了事务消息的⼤致⽅案,分为两个逻辑:正常事务消息的发送及提交、事务消息的补偿流程事务消息发送及提交:发送消息(half消息)服务端响应消息写⼊结果根据发送结果执⾏本地事务(如果写⼊失败,此时half消息对业务不可见,本地逻辑不执⾏)根据本地事务状态执⾏Commit或者Rollback(Commit操作⽣成消息索引,消息对消费者可见)补偿流程:对没有Commit/Rollback的事务消息(pending状态的消息),从服务端发起⼀次“回查”Producer收到回查消息,检查回查消息对应的本地事务的状态根据本地事务状态,重新Commit或者Rollback补偿阶段⽤于解决消息Commit或者Rollback发⽣超时或者失败的情况。

以上RocketMQ事务消息的整体⽅案,对于了解Notify的同学应该是很熟悉的,下⾯是之前Notify相关的资料:整体⽅案是完全相同的,只是两者的Storage不同。

RocketMQ事务消息设计⼀阶段的消息如何对⽤户不可见事务消息相对普通消息最⼤的特点就是⼀阶段发送的消息对⽤户是不可见的。

如何做到写⼊了消息但是对⽤户不可见?——写⼊消息数据,但是不创建对应的消息的索引信息。

熟悉RocketMQ的同学应该都清楚,消息在服务端的存储结构如上,每条消息都会有对应的索引信息,Consumer通过索引读取消息。

那么实现⼀阶段写⼊的消息不被⽤户消费(需要在Commit后才能消费),只需要写⼊Storage Queue,但是不构建Index Queue即可。

RocketMQ中具体实现策略是:写⼊的如果事务消息,对消息的Topic和Queue等属性进⾏替换,同时将原来的Topic和Queue信息存储到消息的属性中。

rocketmq的使用

rocketmq的使用

rocketmq的使用RocketMQ是阿里巴巴推出的一种全新的大规模分布式消息系统,它能够支持海量的消息的高效传输和存储。

它具有高性能、高可靠性和高可用性的特点,可以帮助企业更好的实现分布式消息的发布和消费功能。

在本文中,我们将详细介绍RocketMQ的安装、使用、部署、优化以及实际应用示例,为大家提供一个详尽的介绍和实战指南。

一、RocketMQ是什么?RocketMQ是阿里巴巴推出的一种新型公有云消息中间件,它为企业提供最佳的消息服务解决方案,支持海量的消息的高效传输和存储。

RocketMQ有着高性能、高可靠性和高可用性的特点,能够支持用户从消息仓库中取出和发布消息。

RocketMQ支持多种编程语言,如Java、Go、PHP、.NET等,用户可以基于RocketMQ搭建分布式消息处理系统,实现快速、可靠的消息传递服务。

二、RocketMQ安装RocketMQ提供了丰富的安装方式,用户可以根据自身情况来选择安装方式,具体可以参阅官方文档。

我们主要介绍docker安装,docker安装更快更方便,用户可以快速的搭建一个RocketMQ集群。

1、准备docker环境首先要准备一台服务器,至少要有4G内存,32G的硬盘,可以在这台服务器上安装docker环境,并安装docker-compose。

2、安装RocketMQ在服务器上运行docker-compose安装脚本:$ docker-compose up -d等待程序完成安装,RocketMQ就安装完成了。

三、RocketMQ使用1、启动RocketMQ在终端(Windows系统可以使用PowerShell)中输入以下命令: $ docker exec -it [container_name] sh进入容器,启动RocketMQ:$ sh mqnamesrv &sh mqbroker -n localhost:9876 &2、发送消息使用RocketMQ提供的客户端程序可以很容易地发送消息,发送消息命令如下:$ ./mqadmin producer -t Queue -r 0hello3、消费消息消费消息的命令如下:$ ./mqadmin consumer -c consumerId=CID_Test四、RocketMQ部署1、环境准备部署RocketMQ时,需要准备多台服务器,每台服务器配备至少4G内存和32G硬盘。

基于RocketMQ的MQTT消息推送服务器分布式部署方案

基于RocketMQ的MQTT消息推送服务器分布式部署方案
used in many applications.M eanwhile,as a distributed message queue,RocketMQ has great advantages in distributed
deploym ent of servers.It has the characteristics of high perform ance,high reliability,and high real tim e ability.This
paper introduces the MQTT protocol and the application of RocketMQ,and implements all MQTT protocol message push server based on RocketMQ through the combination of RocketMQ and Mosquitto an d its distributed deployment. Key words:MQTT;RocketMQ;message push server
计 算机 系统 应用 ISSN 1003—3254.CODEN CSAOBN
Computer Systems&Applications,2018,27(6):83—86[doi:10.15888 ̄.cnki.csa.006381】 @中 国科学 院软 件研 究所 版权 所有 .
E-mail:csa@iscas.ac.cn
摘 要:伴 随着互联 网的飞速 发展,特别是在近几 年 中,移动互联 网的发展更为迅猛 .在移动互联 网中,消息推送是 其 中很重要 的一部分,它是手机客户端信 息发布 和通信 的重要方式.MQTT协议是 Android系统 中消息推送 的实现 技术 之一,由于 其具 有低 功耗 、节省流量和可扩展 性强的优点,目前 已得到了众多应用.同时,RocketMQ作为一种 分布 式消息 队列,在服务器分布 式部署上具有很大优 势,具有 高性 能、高可靠 、高实时、分布式特 点.本文介绍 了 MQTT协议与 RocketMQ 的这种开 源项 目的应用,并通 过 RocketMQ与 Mosquitto相结合 的方 式,实现 了一种基 于 RocketMQ的 MQTT消息推送服务器及其分布式部署. 关键词 :MQTT;RocketMQ;消 息推送服务器

rocketmq 代码实现的流程

rocketmq 代码实现的流程

rocketmq 代码实现的流程RocketMQ is an open-source, distributed messaging and streaming platform that is used for building scalable and reliable messaging systems. It offers low latency, high throughput, and fault-tolerant messaging capabilities, making it a popular choice for real-time data streaming applications, event-driven architectures, and message queuing systems. RocketMQ provides a variety of features, including publish-subscribe messaging, message broadcasting, message filtering, and message tracing. Its design is inspired by the principles of the Apache Kafka and the simplicity of the ActiveMQ.RocketMQ 的设计是受到了 Apache Kafka 的启发,结合了ActiveMQ的简单性。

RocketMQ是一个开源的、分布式的消息传递和流媒体平台,用于构建可扩展和可靠的消息系统。

它提供了低延迟、高吞吐量和容错的消息功能,因此成为实时数据流应用、事件驱动架构和消息队列系统的热门选择。

RocketMQ 提供了各种特性,包括发布-订阅消息、消息广播、消息过滤和消息跟踪。

One key aspect of RocketMQ's design is its highly scalable and fault-tolerant architecture. It is capable of handling large volumes ofmessages with low latency, making it suitable for high-throughput, real-time data processing tasks. RocketMQ achieves this scalability and fault tolerance through a distributed and decentralized design, where messages are stored and processed across multiple nodes in a cluster. This allows RocketMQ to handle failures gracefully and continue to operate reliably even in the face of network partitions or hardware failures.RocketMQ的设计的一个关键方面是它的高度可扩展和容错架构。

消息队列rocketmq测试用例

消息队列rocketmq测试用例

消息队列rocketmq测试用例
消息队列RocketMQ是一个分布式消息中间件,用于在分布式系统中进行异步通信。

为了确保RocketMQ在实际应用中的稳定性和可靠性,需要进行各种测试用例的验证。

下面是一些RocketMQ测试用例的示例:
1. 生产者发送消息测试。

测试目标,验证生产者能够成功发送消息到RocketMQ中间件。

测试步骤,编写一个简单的生产者程序,向RocketMQ发送消息,并检查消息是否成功被存储在Broker中。

2. 消费者接收消息测试。

测试目标,验证消费者能够成功从RocketMQ中间件接收消息。

测试步骤,编写一个简单的消费者程序,从RocketMQ订阅
消息,并检查是否能够正确接收到消息并进行处理。

3. 消息重试机制测试。

测试目标,验证RocketMQ的消息重试机制是否能够正确处理消息发送失败的情况。

测试步骤,在发送消息时故意制造发送失败的情况,观察RocketMQ是否能够按照配置的重试策略进行消息重发。

4. 消息顺序性测试。

测试目标,验证RocketMQ是否能够保证消息的顺序性。

测试步骤,发送一组有序的消息到RocketMQ中,并观察消费者是否能够按照发送顺序接收到消息。

5. 高可用性测试。

测试目标,验证RocketMQ在Broker节点故障时能够实现高可用性。

测试步骤,模拟Broker节点宕机,观察RocketMQ是否能够自动进行故障转移并保证消息的可靠传输。

通过以上测试用例的验证,可以确保RocketMQ在实际应用中能够稳定可靠地进行消息传递和处理,为分布式系统的通信提供强有力的支持。

rocketmq 源码执行流程

rocketmq 源码执行流程

rocketmq 源码执行流程RocketMQ 是一款高性能、高可靠性的分布式消息中间件,广泛应用于大数据、云计算、金融等领域。

以下是RocketMQ 的源码执行流程,主要涉及生产者(Producer)、消息队列(Message Queue)、消息存储(Message Store)、消费者(Consumer)、代理服务器(Broker)、服务器端(Server)和消费组(Consumer Group)等方面。

1. 生产者(Producer)生产者在RocketMQ 中负责发送消息到指定的主题(Topic)。

当生产者发送消息时,会首先根据指定的主题找到相应的Broker,然后通过Broker 将消息发送到服务器端。

在源码中,生产者使用长轮询机制向Broker 发送消息,并重试机制确保消息发送成功。

2. 消息队列(Message Queue)消息队列是RocketMQ 中用于存储消息的组件,每个主题都对应多个消息队列。

生产者发送的消息首先被存储在消息队列中,等待被消费者消费。

在源码中,消息队列采用先进先出(FIFO)的方式存储消息,确保先发送的消息先被消费。

3. 消息存储(Message Store)消息存储是RocketMQ 中用于持久化存储消息的组件。

RocketMQ 支持将消息存储在内存或磁盘上,以满足不同的性能和可靠性需求。

在源码中,消息存储采用分段式存储结构,将大表划分为小表,以提高读写性能。

此外,还采用了多种数据结构如二叉树、哈希表等,以实现高效的索引和查询。

4. 消费者(Consumer)消费者在RocketMQ 中负责接收并消费消息。

消费者通过订阅主题来接收消息,并可以采用拉取或推送的模式从Broker 获取消息。

在源码中,消费者与Broker 建立长连接,通过定时拉取或Broker 推送的方式获取消息。

消费者还支持集群消费和广播消费两种模式,以满足不同的业务需求。

5. 代理服务器(Broker)Broker 是RocketMQ 中的一种服务端组件,负责管理主题和消息队列,提供生产者和消费者之间的通信服务。

30.《Rocket MQ 使用排查指南》

30.《Rocket MQ 使用排查指南》

目录RocketMQ原理及快速入门 4什么是消息队列 RocketMQ 4 RocketMQ快速入门教程 16发送问题排查 24客户端发送性能问题 24客户端发送常见异常报错 27消费问题排查 43堆积负载常见问题 43消息投递重试问题 52订阅关系问题 57客户端消费常见异常报错 59消息轨迹常见问题 75其他问题排查 81控制台相关问题 81告警监控相关问题 86资源包费用相关问题 87日志相关问题 91权限相关问题 97使用常见问题 98RocketMQ原理及快速入门什么是消息队列 RocketMQ核心概念消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。

消息队列 RocketMQ 版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

产品功能与特性消息队列 RocketMQ 版在阿里云多个地域(Region)提供了高可用消息云服务。

单个地域内采用多机房部署,可用性极高,即使整个机房都不可用,仍然可以为应用提供消息发布服务。

消息队列 RocketMQ 版提供 TCP 和 HTTP 协议的多语言接入方式,方便不同编程语言开发的应用快速接入消息队列 RocketMQ 版消息云服务。

您可以将应用部署在阿里云 ECS、企业自建云,或者嵌入到移动端、物联网设备中与消息队列 RocketMQ 版建立连接进行消息收发;同时,本地开发者也可以通过公网接入消息队列 RocketMQ 版服务进行消息收发。

什么是消息队列 RocketMQ < 5系统部署架构系统部署架构如下图所示。

图中所涉及到的概念如下所述:6 > 什么是消息队列 RocketMQ●Name Server:是一个几乎无状态节点,可集群部署,在消息队列 Rocket-MQ 版中提供命名服务,更新和发现 Broker 服务。

可靠消息最终一致性【本地消息表、RocketMQ事务消息方案】

可靠消息最终一致性【本地消息表、RocketMQ事务消息方案】

可靠消息最终⼀致性【本地消息表、RocketMQ事务消息⽅案】⼀、可靠消息最终⼀致性事务概述事务发起⽅(消息⽣产⽅)将消息发给消息中间件,事务参与⽅从消息中间件接收消息,事务参与⽅(消息消费⽅)和消息中间件之间都是通过⽹络通信,由于⽹络通信的不确定性会导致分布式事务问题。

因此可靠消息最终⼀致性⽅案要解决以下⼏个问题:【1】本地事务与消息发送的原⼦性问题:事务发起⽅在本地事务执⾏成功后消息必须发出去,否则就丢弃消息。

即实现本地事务和消息发送的原⼦性,要么都成功,要么都失败。

本地事务与消息发送的原⼦性问题是实现可靠消息最终⼀致性⽅案的关键问题。

先来尝试下这种操作,先发送消息,再操作数据库:这种情况下⽆法保证数据库操作与发送消息的⼀致性,因为可能发送消息成功,据库操作失败。

1 begin transaction;2//1.发送MQ3//2.数据库操作4 commit transation;第⼆种⽅案,先进⾏数据库操作,再发送消息:这种情况下貌似没有问题,如果发送 MQ消息失败,就会抛出异常,导致数据库事务回滚。

但如果是超时异常,数据库回滚,但 MQ其实已经正常发送了,同样会导致不⼀致。

1 begin transaction;2//1.数据库操作3//2.发送MQ4 commit transation;【2】事务参与⽅接收消息的可靠性:事务参与⽅必须能够从消息队列接收到消息,如果接收消息失败可以重复接收消息。

【3】消息重复消费的问题:由于步骤2的存在,若某⼀个消费节点超时但是消费成功,此时消息中间件会重复投递此消息,就导致了消息的重复消费。

要解决消息重复消费的问题就要实现事务参与⽅的⽅法幂等性。

⼆、解决⽅案【本地消息表⽅案】1 begin transaction;2//1.新增⽤户3//2.存储积分消息⽇志4 commit transation;【2】定时任务扫描⽇志:如何保证将消息发送给消息队列呢?经过第⼀步消息已经写到消息⽇志表中,可以启动独⽴的线程,定时对消息⽇志表中的消息进⾏扫描并发送⾄消息中间件,在消息中间件反馈发送成功后删除该消息⽇志,否则等待定时任务下⼀周期重试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

消息队列实施方案1、背景异步解耦合、给前端系统提供最高效的反应2、常见消息队列对比2、1 ActiveMqActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规的JMS Provider实现优点:Java语言支持集群模式缺点:性能在消息中间件中处于下游2、2 RabbitmqRabbitmq是基于AMQP使用erlang语言实现的消息队列系统优点:1、完整的消息队列系统,支持多种消息队列模式,包括竞争消费;2、支持集群模式,扩展集群容量和性能比较方便,集成了集群的监控和管理;3、支持消息的持久化;缺点:1、需要学习比较复杂的接口和协议,比较耗费时间;2、性能不是特别理想大概在1wqps左右;3、使用Erlang语言,语言基础;2、3 KafkaKafka 是LinkedIn 开发的一个高性能、分布式的消息发布订阅系统。

优点:1、分布式集群可以透明的扩展,增加新的服务器进集群。

2、高性能。

单机写入TPS约在百万条/秒3、容错。

数据都会复制到几台服务器上。

缺点:1、复杂性。

Kafka需要zookeeper 集群的支持,Topic通常需要人工来创建,部署和维护较一般消息队列成本更高定位于日志传输、存在消息丢失的肯能、消息乱序3、消息发送错误无重试2、4 RocketMQRockerMq 是阿里公司中间件团队参考Kafka思想,用Java语言实现的消息传输系统优点:1、较高性能,单机写入TPS单实例约7万条/秒2、容错,多种集群模式、可以解决容错问题3、消息重试发送4、顺序消息可以严格执行缺点:1、消息重复、消费端需要做去重操作2、5 选用结论从项目业务与团队技术偏向考虑,我们应该需要一种数据安全性比较高,保证每个消息都会被执行;有容错机制、支持集群模式高可用;性能不错,可以在毫秒级处理消息;支持顺序消息的消息中间件,RockerMq 可以满足这些要求。

3、RockerMq简介3、1 RockerMq 产品介绍参考阿里公司提供的《RocketMQ 开发指南》,最新版针对v3.2.43、2 RockerMq集群3、2、1 部署方式Rockermq共有四种部署方式,分别是:1、单个Master一旦Broker 重启或者宕机时,会导致整个服务不可用2、多Master 模式一个集群无Slave,全是Master,例如2 个Master 戒者3 个Master优点:1、配置简单,2、容错,单个Master 宕机或重启维护对应用无影响,在磁盘配置为RAID10 时,即使机器宕机不可恢复情况下,由于RAID10 磁盘非常可靠,在同步刷盘时消息不会丢,异步刷盘丢失少量消息,3、性能最高。

3、多Master 多Slave 模式,异步复制每个Master 配置一个或多个Slave,有多对Master-Slave,HA(高可用集群)采用异步复制方式,主备有短暂消息延迟,毫秒级。

优点:1、即使磁盘损坏,消息丢失的非常少,消息实时性不会被影响,因为Master 宕机后,消费者仍然可以从Slave 消费,此过程对应用透明。

不需要人工干预。

性能同多Master 模式几乎一样。

缺点:1、Master宕机,磁盘损坏时,因为主备有短暂消息延迟,未复制到slave的消息会丢失。

2、目前master宕机后,备机不能自动切换为主机。

只有master可以接收消息,若所有master 宕机,将不能接收消息4、多Master 多Slave 模式,同步双写每个Master 配置一个或多个Slave,有多对Master-Slave,HA 采用同步双写方式,主备都写成功,才返回成功。

优点:数据与服务都无单点,Master 宕机情冴下,消费者可以从slave消费、消息无延迟,服务可用性与数据可用性都非常高缺点:1、性能比异步复制模式略低,収送单个消息的RT(返回时间)会略高。

2、目前master宕机后,备机不能自动切换为主机。

只有master可以接收消息,若所有master 宕机,将不能接收消息选用结论由于我们需要保证消息中间件的高可用性,消息不丢失、消息无延迟,所以我们选择“多Master多Slave模式,同步双写”模式。

并且选择同步刷盘。

3、2、2 多Master多Slave模式多master多slave模式网络结构图主要组件有:Name Server、Broker、Producer、Consumer1、Name Server是一个几乎无状态节点,可集群部署,节点之间无信息同步、记录Topic 路由信息。

2、Broker分为Master和Slave,一个Master 可以对应多个Slave,但是一个Slave只能对应一个Master。

3、Producer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic 路由信息,并向提供Topic服务的Master 建立长连接,定时向Master 发送心跳。

Producer只可以向Master发送消息。

Producer 完全无状态,可集群部署。

4、Consumer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从Name Server获取Topic路由信息,并与提供Topic服务的Master、Slave建立长连接,并定时向Master、Slave収送心跳。

Consumer既可以从Master 订阅消息,也可以从Slave 订阅消息,订阅规则由Broker配置决定3、3 集群搭建linux 环境下部署rocketMq多master多slave模式、同步双写模式集群,暂定为2个master,2个slave3、3、1 安装条件4台linux服务器、分为master-a、slave-a ; master-b、slave-b服务器防火墙开启9876,10911lokkit -p 9876:tcp -p 10911:tcp服务器支持wget命令服务器安装jdk,不低于使用的rocketMq的支持版本3、3、2 安装步骤4台linux服务器、分为master-a、slave-a ; master-b、slave-b假设ip分别为:master-a =10.1.236.1slave–a =10.1.236.2master-b =10.1.236.3slave-b =10.1.236.43、3、2、1 master-a1 从github下载RocketMQ安装包或源码自编译安装wget https://github./alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz 2 解压缩、并创建数据、日志目录tar –xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量:系统变量:Vi /etc/profile或者修改当前用户的环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=${PATH}:${ROCKETMQ_HOME}/binsource 命令是环境变量生效4 修改mq集群的master-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties不是强制必须使用这个文件,使用者可以自行定义# brokerClusterName=DefaultClusterbrokerName=broker-a #归属master-slave组的名字brokerId=0 #0表示为master-slave组中为masternamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876 #nameserv defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #Broker 对外服务的监听端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data #数据目录storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目录maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER #角色同步双写MasterflushDiskType=SYNC_FLUSH #同步刷盘brokerIP1=10.1.236.1 #本机IP地址,多网卡易出错,请手工指定其他配置请参考《RocketMQ 开发指南》,最新版针对v3.2.45 启动mq集群的master-a跳转到RocketMQ的bin目录下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &3、3、2、2 slave-a1从github下载RocketMQ安装包或源码自编译安装wget https://github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录tar –xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=${PATH}:${ROCKETMQ_HOME}/binsource 命令是环境变量生效4修改mq集群的slave-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件的brokerName 正确即可# brokerClusterName=DefaultClusterbrokerName=broker-a #归属master-slave组的名字brokerId=1 #1表示在master-slave组中为slavenamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876 defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #对外端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data #数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs #日志存放maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE #角色SlaveflushDiskType=SYNC_FLUSH # 同步刷盘brokerIP1=10.1.236.2 #本机ip,多网卡,建议自定义其他配置请参考《RocketMQ 开发指南》,最新版针对v3.2.45 启动mq集群的slave-a跳转到RocketMQ的bin目录下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &3、3、2、3 master-b1 从github下载RocketMQ安装包或源码自编译安装wget https://github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录tar –xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=${PATH}:${ROCKETMQ_HOME}/binsource 命令是环境变量生效4 修改mq集群的master-b配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties不是强制必须使用这个文件,使用者可以自行定义# brokerClusterName=DefaultClusterbrokerName=broker-b #归属master-slave组的名字brokerId=0 #0表示为master-slave组中为masternamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876 #nameserv defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #Broker 对外服务的监听端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/opt/RocketMQ/alibaba-rocketmq/data #数据目录storePathCommitLog=/opt/RocketMQ/alibaba-rocketmq/logs #日志目录maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SYNC_MASTER #角色同步双写MasterflushDiskType=SYNC_FLUSH #同步刷盘brokerIP1=10.1.236.3 #本机IP地址,多网卡易出错,请手工指定其他配置请参考《RocketMQ 开发指南》,最新版针对v3.2.45 启动mq集群的master-b跳转到RocketMQ的bin目录下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &3、3、2、4 slave-b1从github下载RocketMQ安装包或源码自编译安装wget https://github./alibaba/RocketMQ/releases/download/v3.2.2/alibaba-rocketmq-3.2.2.tar.gz2 解压缩、并创建数据、日志目录tar –xvf alibaba-rocketmq-3.2.2.tar.gz3 配置环境变量例如:export ROCKETMQ_HOME=/opt/RocketMQ/alibaba-rocketmqexport PATH=${PATH}:${ROCKETMQ_HOME}/binsource 命令是环境变量生效4修改mq集群的slave-a 配置修改文件$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties不是强制必须使用这个文件,使用者可以自行定义、只要保证配置文件的brokerName 正确即可# brokerClusterName=DefaultClusterbrokerName=broker-b #归属master-slave组的名字brokerId=1 #1表示在master-slave组中为slavenamesrvAddr=10.1.236.1:9876;10.1.236.2:9876;10.1.236.3:9876;10.1.236.4:9876 defaultTopicQueueNums=4autoCreateTopicEnable=trueautoCreateSubscriptionGroup=truelistenPort=10911 #对外端口deleteWhen=04fileReservedTime=120mapedFileSizeCommitLog=1073741824mapedFileSizeConsumeQueue=50000000destroyMapedFileIntervalForcibly=120000redeleteHangedFileInterval=120000diskMaxUsedSpaceRatio=88storePathRootDir=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/data #数据存放storePathCommitLog=/aifs01/users/tstusr12/opt/RocketMQ/alibaba-rocketmq/logs #日志存放maxMessageSize=65536flushCommitLogLeastPages=4flushConsumeQueueLeastPages=2flushCommitLogThoroughInterval=10000flushConsumeQueueThoroughInterval=60000checkTransactionMessageEnable=falsesendMessageThreadPoolNums=128pullMessageThreadPoolNums=128brokerRole=SLAVE #角色SlaveflushDiskType=SYNC_FLUSH # 同步刷盘brokerIP1=10.1.236.4 #本机ip,多网卡,建议自定义其他配置请参考《RocketMQ 开发指南》,最新版针对v3.2.45 启动mq集群的slave-b跳转到RocketMQ的bin目录下>cd $ROCKETMQ_HOME/bin>nohup sh mqnamesrv &>nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &4、MQ 消息服务接口实现4.1、流程图 消费端应用消息中间件MQ 服务器Http 请求发送消息消息发送至服务器监听消息并拉取消息通过backurl 将消息推送至消费端返回发送结果4.2、消息中间件接口规此服务接口以dubbo提供的restful协议对外提供发送消息服务,并通过backurl回调消费端把消息推送给消费者,使用此服务可以通过http post请求的方式,消费端要提供接受消息的http协议的post接口。

相关文档
最新文档