Apache RocketMQ
Apache RocketMQ 是一个低延迟、高性能、高可靠、具备万亿级容量和灵活可扩展性的分布式消息与流处理平台。
它提供了多种功能:
- 消息模式,包括发布/订阅、请求/回复和流式传输
- 金融级事务消息
- 基于 DLedger Controller 的内置容错和高可用配置选项
- 内置消息追踪功能,同时支持 opentracing
- 多样化的大数据和流式生态系统集成
- 按时间或偏移量回溯消息
- 同一队列中可靠的 FIFO 和严格有序消息
- 高效的拉取和推送消费模型
- 单队列百万级消息堆积能力
- 多种消息协议,如 gRPC、MQTT、JMS 和 OpenMessaging
- 灵活的分布式横向扩展部署架构
- 极速批量消息交换系统
- 多种消息过滤机制,如 SQL 和 Tag
- 用于隔离测试和云隔离集群的 Docker 镜像
- 功能丰富的管理仪表板,用于配置、指标和监控
- 认证和授权
- 免费开源连接器,支持源和汇
- 轻量级实时计算
快速入门
本段将指导您通过不同方式安装 RocketMQ。 对于本地开发和测试,每个组件仅会创建一个实例。
在本地运行 RocketMQ
RocketMQ 可在所有主流操作系统上运行,且仅需安装 Java JDK 8 或更高版本。
要进行检查,请运行 java -version:
$ java -version
java version "1.8.0_121"
对于 Windows 用户,点击此处]下载 5.5.0 RocketMQ 二进制发行版,
将其解压到本地磁盘,例如 D:\rocketmq。
对于 macOS 和 Linux 用户,执行以下命令:
# Download release from the Apache mirror
$ wget https://dist.apache.org/repos/dist/release/rocketmq/5.5.0/rocketmq-all-5.5.0-bin-release.zip
# Unpack the release
$ unzip rocketmq-all-5.5.0-bin-release.zip
准备一个终端并切换到已解压的 bin 目录:
$ cd rocketmq-all-5.5.0-bin-release/bin
1) 启动 NameServer
NameServer 将监听 0.0.0.0:9876,请确保本地机器上该端口未被其他进程占用,然后执行以下操作。
对于 macOS 和 Linux 用户:
### start Name Server
$ nohup sh mqnamesrv &
### check whether Name Server is successfully started
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
对于 Windows 用户,您需要先设置环境变量:
- 在桌面上,右键单击“计算机”图标。
- 从上下文菜单中选择“属性”。
- 单击“高级系统设置”链接。
- 单击“环境变量”。
- 添加环境变量
ROCKETMQ_HOME="D:\rocketmq"。
然后切换到 rocketmq 目录,输入并运行:
$ mqnamesrv.cmd
The Name Server boot success...
2) 启动 Broker
适用于 macOS 和 Linux 用户:
### start Broker
$ nohup sh mqbroker -n localhost:9876 &
### check whether Broker is successfully started, eg: Broker's IP is 192.168.1.2, Broker's name is broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.168.1.2:10911] boot success...
对于 Windows 用户:
$ mqbroker.cmd -n localhost:9876
The broker[broker-a, 192.168.1.2:10911] boot success...
在 Docker 中运行 RocketMQ
您可以在自己的机器上通过 Docker 容器运行 RocketMQ,
host 网络将用于暴露容器中的监听端口。
1) 启动 NameServer
$ docker run -it --net=host apache/rocketmq ./mqnamesrv
2) 启动 Broker
$ docker run -it --net=host --mount type=bind,source=/tmp/store,target=/home/rocketmq/store apache/rocketmq ./mqbroker -n localhost:9876
在 Kubernetes 中运行 RocketMQ
您也可以使用 RocketMQ Operator 在 Kubernetes 集群中运行 RocketMQ 集群。
在执行操作之前,请确保 kubectl 及相关 kubeconfig 文件已安装在您的机器上。
1) 安装 CRDs
### install CRDs
$ git clone https://github.com/apache/rocketmq-operator
$ cd rocketmq-operator && make deploy
### check whether CRDs are successfully installed
$ kubectl get crd | grep rocketmq.apache.org
brokers.rocketmq.apache.org 2022-05-12T09:23:18Z
consoles.rocketmq.apache.org 2022-05-12T09:23:19Z
nameservices.rocketmq.apache.org 2022-05-12T09:23:18Z
topictransfers.rocketmq.apache.org 2022-05-12T09:23:19Z
### check whether operator is running
$ kubectl get pods | grep rocketmq-operator
rocketmq-operator-6f65c77c49-8hwmj 1/1 Running 0 93s
2) 创建集群实例
### create RocketMQ cluster resource
$ cd example && kubectl create -f rocketmq_v1alpha1_rocketmq_cluster.yaml
### check whether cluster resources are running
$ kubectl get sts
NAME READY AGE
broker-0-master 1/1 107m
broker-0-replica-1 1/1 107m
name-service 1/1 107m
Apache RocketMQ 社区
-
RocketMQ Streams: 基于 Apache RocketMQ 的轻量级流计算引擎。
-
RocketMQ Flink: Apache Flink 的 Apache RocketMQ 连接器,支持数据流和 Table 中的 source 和 sink 连接器。
-
RocketMQ APIs: RocketMQ protobuf 协议。
-
RocketMQ Clients: 基于 gRPC/protobuf 的 RocketMQ 客户端。
-
RocketMQ Remoting-based Clients
-
RocketMQ Spring: 帮助开发者快速将 Apache RocketMQ 集成到 Spring Boot 的项目。
-
RocketMQ Exporter: 用于 Prometheus 的 Apache RocketMQ 导出器。
-
RocketMQ Operator: 提供在 Kubernetes 上运行 Apache RocketMQ 集群的方式。
-
RocketMQ Docker: Apache RocketMQ Docker 镜像的 Git 仓库。
-
RocketMQ Dashboard: Apache RocketMQ 的运维控制台。
-
RocketMQ Connect: 用于在 Apache RocketMQ 与其他系统之间可扩展且可靠地流式传输数据的工具。
-
RocketMQ MQTT: 一种新的 MQTT 协议架构模型,基于该模型,Apache RocketMQ 可以更好地支持来自 IoT 设备和移动 APP 等终端的消息。
-
RocketMQ EventBridge: EventBridge 使构建事件驱动型应用变得更加容易。
-
RocketMQ 孵化社区项目: Apache RocketMQ 的孵化器社区项目,包括 logappender, rocketmq-ansible, rocketmq-beats-integration, rocketmq-cloudevents-binding 等。
-
RocketMQ 网站: Apache RocketMQ 网站的代码仓库。
-
RocketMQ E2E: 用于测试 Apache RocketMQ 的项目,包括端到端测试、性能测试和兼容性测试。
学习 & 联系我们
- 邮件列表: https://rocketmq.apache.org/about/contact/
- 主页: https://rocketmq.apache.org
- 文档: https://rocketmq.apache.org/docs/quick-start/
- 问题: https://github.com/apache/rocketmq/issues
- 资源: https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal
- 提问: https://stackoverflow.com/questions/tagged/rocketmq
贡献
我们随时欢迎新的贡献,无论是琐碎的清理工作、大型新功能 还是其他物质奖励,更多详情请参见此处。
许可证
Apache 许可证,第 2.0 版 版权所有 (C) Apache 软件基金会
出口管制声明
本发行版包含加密软件。您目前居住的国家可能对加密软件的进口、持有、使用和/或再出口至其他国家 存在限制。 在使用任何加密软件之前,请查阅您所在国家关于加密软件进口、持有、使用及再出口的法律、法规和政策, 以确认是否被允许。有关更多信息,请参阅 http://www.wassenaar.org/。
美国商务部工业与安全局(BIS)已将此软件归类为出口商品控制编号(ECCN)5D002.C.1,该类别包括 使用或执行非对称算法加密功能的信息安全软件。本 Apache 软件基金会发行版的形态和方式使其符合在许可例外 ENC 技术 软件不受限制(TSU)例外(参见 BIS 出口管理条例,第 740.13 节)下出口的条件, 适用于目标代码和源代码。
以下提供了有关所包含加密软件的更多详细信息:
本软件使用 Apache Commons Crypto (https://commons.apache.org/proper/commons-crypto/) 来 支持身份验证,以及对在服务之间通过网络发送的数据进行加密和解密。