一、前情提要
- 设备:MacBook Pro M2芯片,系统MacOS Sequoia 15.0
- 安装:
- Java jdk 1.8;
- RocketMQ 5.3.0;
- RocketMQ Console 1.0.0
安装指南
配置java环境(jdk 1.8)
待补充
安装RocketMQ(5.3.0)
-
下载:rocketmq.apache.org/download/ (注意:需要下载Binary,不要下载Source),下载完后解压到你的安装目录
-
启动服务
# 启动NameServer:
nohup sh mqnamesrv
# 启动broker & proxy
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
- 查看启动日志:
#查看namesrv的日志
tail -f ~/logs/rocketmqlogs/namesrv.log
#查看broker的日志
tail -f ~/logs/rocketmqlogs/broker.log
- 查看启动端口
#查看namesrv的端口
lsof -i:9876
#查看broker的端口
lsof -i:10911
- 操作消息 发送消息
#发送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
消费消息
#消费消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
- 停止服务
#停止namesrv
sh bin/mqshutdown namesrv
#停止broker
sh bin/mqshutdown broker
- proxy配置
{
"rocketMQClusterName": "DefaultCluster",
"grpcServerPort": 8081, // endpoints接入点端口号必须用grpc
"remotingListenPort": 8082,
"namesrvAddr": "127.0.0.1:9876;localhost:9876;0.0.0.0:9876" // 必须配置
}
1. 字段:rocketMQClusterName,代理服务器所属的RocketMQ集群名称,默认为"DefaultCluster"。
2. 字段:proxyClusterName,代理服务器的集群名称,默认为"DefaultCluster"。
3. 字段:proxyName,代理服务器的名称,默认为本地主机名。
4. 字段:localServeAddr,代理服务器的本地服务地址,默认为空字符串。
5. 字段:heartbeatSyncerTopicClusterName,心跳同步器的主题集群名称,默认为空字符串。
6. 字段:heartbeatSyncerThreadPoolNums,心跳同步器的线程池大小,默认为4。
7. 字段:heartbeatSyncerThreadPoolQueueCapacity,心跳同步器的线程池队列容量,默认为100。
8. 字段:heartbeatSyncerTopicName,心跳同步器的主题名称,默认为"DefaultHeartBeatSyncerTopic"。
9. 字段:enablePrintJstack,是否启用打印Jstack信息,默认为true。
10. 字段:printJstackInMillis,打印Jstack信息的间隔时间,默认为60秒。
11. 字段:printThreadPoolStatusInMillis,打印线程池状态的间隔时间,默认为3秒。
12. 字段:namesrvAddr,NameServer的地址,默认从环境变量或系统属性中获取。
13. 字段:namesrvDomain,NameServer的域名,默认为空字符串。
14. 字段:namesrvDomainSubgroup,NameServer的子组名称,默认为空字符串。
15. 字段:tlsTestModeEnable,是否启用TLS测试模式,默认为true。
16. 字段:tlsKeyPath,TLS密钥的路径,默认为配置文件中的路径。
17. 字段:tlsCertPath,TLS证书的路径,默认为配置文件中的路径。
18. 字段:proxyMode,代理服务器的模式,默认为"CLUSTER"。
19. 字段:grpcServerPort,gRPC服务器的端口号,默认为8081。
20. 字段:grpcShutdownTimeSeconds,gRPC服务器关闭的超时时间,默认为30秒。
21. 字段:grpcBossLoopNum,gRPC服务器的Boss线程数,默认为1。
22. 字段:grpcWorkerLoopNum,gRPC服务器的Worker线程数,默认为处理器数量的2倍。
23. 字段:enableGrpcEpoll,是否启用gRPC的Epoll模型,默认为false。
24. 字段:grpcThreadPoolNums,gRPC服务器的线程池大小,默认为16 + 处理器数量的2倍。
25. 字段:grpcThreadPoolQueueCapacity,gRPC服务器的线程池队列容量,默认为100000。
26. 字段:brokerConfigPath,Broker配置文件的路径,默认为配置文件中的路径。
27. 字段:grpcMaxInboundMessageSize,gRPC服务器接收的最大消息大小,默认为130MB。
28. 字段:maxMessageSize,消息的最大大小,默认为4MB。
29. 字段:maxUserPropertySize,用户属性的最大大小,默认为16KB。
30. 字段:userPropertyMaxNum,用户属性的最大数量,默认为128。
31. 字段:maxMessageGroupSize,消息组的最大大小,默认为64。
32. 字段:defaultInvisibleTimeMills,消息弹出后的默认不可见时间,默认为60秒。
33. 字段:minInvisibleTimeMillsForRecv,消息接收后的最小不可见时间,默认为10秒。
34. 字段:maxInvisibleTimeMills,消息的最大不可见时间,默认为12小时。
35. 字段:maxDelayTimeMills,消息的最大延迟时间,默认为1天。
36. 字段:maxTransactionRecoverySecond,事务恢复的最大时间,默认为1小时。
37. 字段:enableTopicMessageTypeCheck,是否启用主题消息类型的检查,默认为true。
38. 字段:grpcClientProducerMaxAttempts,gRPC客户端生产者最大重试次数,默认为3。
39. 字段:grpcClientProducerBackoffInitialMillis,gRPC客户端生产者退避初始间隔时间,默认为10毫秒。
40. grpcClientProducerBackoffMaxMillis:设置gRPC客户端生产者在重试时的最大退避时间间隔为1秒。
41. grpcClientProducerBackoffMultiplier:设置gRPC客户端生产者重试时退避时间的乘数因子为2,意味着每次失败后等待的时间将成倍增加。
42. grpcClientConsumerMinLongPollingTimeoutMillis 和 grpcClientConsumerMaxLongPollingTimeoutMillis 分别设置了gRPC客户端消费者长轮询请求的最小和最大超时时间(分别为5秒和20秒)。
43. grpcClientConsumerLongPollingBatchSize:设置gRPC客户端消费者进行长轮询请求时一次性拉取的消息批次大小为32条。
44. grpcClientIdleTimeMills:设置gRPC客户端空闲超时时间为120秒,在这段时间内如果没有通信活动,则可能被关闭或回收资源。
45. channelExpiredInSeconds 和 contextExpiredInSeconds 分别指定了连接通道和上下文的有效期(分别以秒为单位,分别是60秒和30秒)。
46. rocketmqMQClientNum:设定RocketMQ客户端实例的数量为6个。
47. grpcProxyRelayRequestTimeoutInSeconds:设置代理转发请求的超时时间为5秒。
48. 后续一系列的 ThreadPoolNums 和 ThreadQueueCapacity 参数用于配置不同功能模块的线程池数量和队列容量,例如生产者、消费者、路由处理等,这些参数用于调整并发处理能力以及防止任务堆积。
49. topicRouteServiceCache... 相关参数:用于缓存Topic路由信息的服务,包括缓存过期时间、刷新频率、缓存最大数量以及对应的线程池大小和队列容量。
50. transactionHeartbeat... 相关参数:涉及事务心跳相关的线程池大小、队列容量、心跳周期、批量处理数目以及事务数据的过期扫描、清理等待时间和过期时间等,用以维护分布式事务的正确性和一致性。
51. longPollingReserveTimeInMillis:长轮询预留时间(毫秒),可能是为了确保在处理长轮询请求时留出一定余量。
52. invisibleTimeMillisWhenClear:当清除消息时,默认不可见时间(毫秒)。 这些配置参数共同决定了RocketMQ代理服务的性能、容错性、事务处理能力和资源利用率等方面的关键特性。
安装RocketMQ Console(1.0.0)
- 下载(只有1.0.0版本):github.com/apache/rock… ,下载完后解压zip包
- 进入rocketmq-console/src/main/resources/文件夹,修改配置文件application.properties,配置rocketmq.config.namesrvAddr属性的值,即nameserver的服务地址:
vim application.properties(端口可以自行定义)
vim application.properties
#这里设置namesrv的地址
rocketmq.config.namesrvAddr=127.0.0.1:9876
#修改服务端口(默认是8080,避免与其他服务冲突)
server.port=6666
3. 保存修改后的配置文件,返回rocketmq-console目录,使用maven打包命令打包:mvn clean package -Dmaven.test.skip=true,打包后,在/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console目录下会创建一个“target”目录
- 启动服务
# 进入 rocketmq-console/target目录
# 后台常驻启动
nohup java -jar rocketmq-console-ng-1.0.0.jar &
- 查看日志
#进入:/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/target目录
tail -f nohup.out
- 停止服务
- 如果是:
java -jar rocketmq-console-ng-1.0.0.jar &这样运行,那么ctrl + c就可以了; - 如果是后台常驻启动运行:
nohup java -jar rocketmq-console-ng-1.0.0.jar &,那么可以先通过:lsof -i:8085找到PID,然后kill PID;