Mac安装RocketMQ以及RocketMQ Console记

1,565 阅读6分钟

一、前情提要

  1. 设备:MacBook Pro M2芯片,系统MacOS Sequoia 15.0
  2. 安装:
    • Java jdk 1.8;
    • RocketMQ 5.3.0;
    • RocketMQ Console 1.0.0

安装指南

配置java环境(jdk 1.8)

待补充

安装RocketMQ(5.3.0)

  1. 下载:rocketmq.apache.org/download/ (注意:需要下载Binary,不要下载Source),下载完后解压到你的安装目录 image.png

  2. 启动服务

# 启动NameServer:
nohup sh mqnamesrv

# 启动broker & proxy
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
  1. 查看启动日志:
#查看namesrv的日志
tail -f ~/logs/rocketmqlogs/namesrv.log

#查看broker的日志
tail -f ~/logs/rocketmqlogs/broker.log
  1. 查看启动端口
#查看namesrv的端口
lsof -i:9876

#查看broker的端口
lsof -i:10911
  1. 操作消息 发送消息
#发送消息 
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
消费消息

#消费消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

  1. 停止服务
#停止namesrv
sh bin/mqshutdown namesrv
 
#停止broker
sh bin/mqshutdown broker
  1. 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. 下载(只有1.0.0版本):github.com/apache/rock… ,下载完后解压zip包
  2. 进入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”目录

  1. 启动服务
# 进入 rocketmq-console/target目录

# 后台常驻启动
nohup java -jar rocketmq-console-ng-1.0.0.jar &
  1. 查看日志
#进入:/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/target目录
tail -f nohup.out
  1. 停止服务
  • 如果是: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;

image.png