本文详细介绍了Rocketmq的安装过程,包括环境准备、下载RocketMQ、安装启动过程以及验证安装成功的步骤。通过一系列步骤,确保RocketMQ能够在Linux系统上顺利运行。
RocketMQ简介 RocketMQ是什么RocketMQ是由阿里巴巴开源的一款分布式消息中间件,基于Java语言开发,是Apache软件基金会的顶级项目。RocketMQ具有高性能、高可用、高可靠、大规模等特点,适用于分布式应用之间的异步通信、流量削锋、系统解耦等场景。
RocketMQ采用了分布式架构,基于发布/订阅模式,可以实现消息的可靠传输。它支持多种消息类型,包括普通消息、顺序消息、事务消息、定时消息、消息回溯等,满足不同场景下的需求。
RocketMQ的主要特性- 高并发性能:RocketMQ每秒可以处理数十万的消息,支持百万级的消息积压,适合高并发场景。
- 高可用性:RocketMQ支持多主多从模式,可以部署多个NameServer和Broker节点,通过主从复制保证数据的一致性和可靠性。
- 高可靠性:RocketMQ提供了消息的可靠传输机制,支持消息的重试和幂等性处理,保证消息不丢失。
- 多种消息类型:RocketMQ支持普通消息、顺序消息、事务消息、定时消息、消息回溯等多种类型的消息,满足不同的业务需求。
- 水平扩展:RocketMQ通过增加Broker节点来实现水平扩展,方便应对业务量的增长。
- 消息过滤:RocketMQ支持基于SQL语句的消息过滤,可以根据业务逻辑对消息进行过滤处理。
- 消息轨迹:RocketMQ提供了消息轨迹功能,可以追踪消息的流转过程,方便排查问题。
RocketMQ支持多个操作系统,包括Linux、Windows、macOS等。本文将以Linux系统为例进行说明。Linux系统推荐使用CentOS 7或Ubuntu 18.04以上版本。
Java环境配置RocketMQ基于Java语言开发,因此需要安装Java环境。建议安装JDK 8或更高版本。以下是安装步骤:
- 下载JDK:访问JDK官方网站,下载对应版本的JDK安装包。
- 安装JDK:以JDK 8为例,使用以下命令安装JDK:
sudo yum install -y java-1.8.0-openjdk
- 验证安装:安装完成后,可以通过以下命令验证JDK是否安装成功:
java -version
输出结果应该显示JDK版本信息,如:
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
下载RocketMQ
官方下载地址
您可以访问RocketMQ官方网站下载RocketMQ的最新版本。在下载页面,选择最新稳定版本。例如,当前最新版本为4.9.3
。
下载完成后,解压下载的压缩包到指定目录。例如,将RocketMQ解压到/opt/rocketmq
目录:
tar -zxvf rocketmq-all-4.9.3-bin-release.tar.gz -C /opt/rocketmq
安装RocketMQ
解压RocketMQ
下载并解压RocketMQ后,您需要设置环境变量以便后续操作。编辑/etc/profile
文件,添加以下内容:
export ROCKETMQ_HOME=/opt/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
保存文件并执行source /etc/profile
使环境变量生效。
RocketMQ提供了一些初始化脚本,可以帮助您快速启动RocketMQ服务。执行以下命令初始化RocketMQ:
sh bin/mqadmin updateEnv
该命令会检查RocketMQ环境设置,如果环境变量设置正确,会输出环境信息。
启动RocketMQ 启动NameServerNameServer是RocketMQ的名称服务器,用于管理和维护Broker节点的信息。启动NameServer,执行以下命令:
nohup sh bin/mqnamesrv &
通过以下命令查看NameServer的启动日志:
tail -200f ~/logs/rocketmqlogs/namesrv.log
成功启动后,日志中会输出一些信息,如:
The Name Server runs in 127.0.0.1:9876
启动Broker
Broker是RocketMQ的消息代理服务器,负责消息的生产和消费。以下步骤启动Broker:
-
创建Broker配置文件:在
conf
目录下创建broker.properties
文件,内容如下:# Broker的唯一标识符 brokerId=0 # Broker的名称 brokerName=localhost # Broker的IP地址 brokerIP1=127.0.0.1 # NameServer地址 namesrvAddr=127.0.0.1:9876 # Broker的运行模式,可选值为ASYNC_WRITE(异步刷盘),SYNC_FLUSH(同步刷盘) brokerRole=ASYNC_WRITE # 消息保存时间 msgStoreConfigFile=/opt/rocketmq/store/Config/2MMapFileIndexConfig
-
启动Broker:执行以下命令启动Broker:
nohup sh bin/mqbroker -n 127.0.0.1:9876 -c ~/rocketmq/conf/broker.properties &
-
查看Broker启动日志:
tail -200f ~/logs/rocketmqlogs/broker/localhost/localhost.log
成功启动后,日志中会输出一些信息,如:
The broker[localhost,127.0.0.1:10911] starts spring and starts to listen messages.
验证安装
发送消息测试
为了验证RocketMQ是否安装成功,您可以发送一条消息进行测试。首先,创建一个生产者应用程序来发送消息。以下是一个简单的生产者示例代码:
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
public class SimpleProducer {
public static void main(String[] args) throws Exception {
// 创建生产者实例,设置生产者组名
DefaultMQProducer producer = new DefaultMQProducer("SimpleProducerGroup");
// 设置NameServer地址
producer.setNamesrvAddr("127.0.0.1:9876");
// 启动生产者
producer.start();
// 创建消息,设置主题、标签和消息内容
Message msg = new Message("SimpleTopic", "TagA", "Hello RocketMQ".getBytes());
// 发送消息
SendResult sendResult = producer.send(msg);
// 输出发送结果
System.out.println(sendResult);
// 关闭生产者
producer.shutdown();
}
}
编译并运行上述代码,查看RocketMQ的Broker日志,确认消息是否已成功发送。您可以通过以下步骤编译并运行Java代码:
javac -cp /opt/rocketmq/lib/* SimpleProducer.java
java -cp /opt/rocketmq/lib/*:. SimpleProducer
接收消息测试
接下来,创建一个消费者应用程序来接收消息进行测试。以下是一个简单的消费者示例代码:
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
public class SimpleConsumer {
public static void main(String[] args) throws Exception {
// 创建消费者实例,设置消费者组名
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("SimpleConsumerGroup");
// 设置NameServer地址
consumer.setNamesrvAddr("127.0.0.1:9876");
// 订阅Topic,设置消息过滤器
consumer.subscribe("SimpleTopic", "*");
// 设置消息监听器
consumer.setMessageListener((MessageListenerConcurrently) (msgs, context) -> {
for (MessageExt msg : msgs) {
System.out.println("Receive New Messages: " + new String(msg.getBody()));
}
return null;
});
// 启动消费者
consumer.start();
}
}
编译并运行上述代码,确保消费者已经启动并成功订阅了消息。您可以通过以下步骤编译并运行Java代码:
javac -cp /opt/rocketmq/lib/* SimpleConsumer.java
java -cp /opt/rocketmq/lib/*:. SimpleConsumer
然后,再次运行生产者代码发送消息,查看消费者是否接收到消息。通过上述步骤,您可以完成RocketMQ的安装和简单的消息发送接收测试,证明RocketMQ已经成功安装并正常运行。
共同学习,写下你的评论
评论加载中...
作者其他优质文章