从零开始搭建 RocketMQ 环境
准备
启动 name server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
启动 broker
> nohup sh bin/mqbroker -n localhost:9876 &
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...
消息生产和消费
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
关闭 name server 和 broker
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
配置 name server
- 新建namesrv.properties文件
# 自定义监听端口
listenPort=19876
- 启动 name server 时,通过 -c 指定配置文件
nohup sh bin/mqnamesrv -c ./conf/namesrv.properties &
指定 name server 集群地址
Broker & Consumer & Producer,指定 name server 地址的几种方式。
编码
# Producer
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
# Consumer
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
consumer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
# If integrating admin tool into your own dashboard
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name");
defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
shell -n
sh bin/mqbroker -n localhost:9876
Java Options
rocketmq.namesrv.addr
环境变量
NAMESRV_ADDR
HTTP Endpoint(推荐)
如果未使用上述指定 name server 地址的方法,会使用本方式获取 name server 地址。
- Apache RocketMQ 访问URL:http://jmenv.tbsite.net:8080/rocketmq/nsaddr
- URL返回内容:192.168.0.1:9876;192.168.0.2:9876
- 客户端启动10秒后,每2分钟请求一次上述URL(刷新一次 name server 地址)。
- rocketmq.namesrv.domain 可修改 jmenv.tbsite.net:8080
- rocketmq.namesrv.domain.subgroup 可修改 nsaddr。
推荐使用本方法,支持动态增减 name server 节点,而不需要重启客户端。
命令行管理 mqadmin
配置 Broker
属性名 | 默认值 | 说明 |
---|---|---|
istenPort | 10911 | listen port for client |
namesrvAddr | null | name server address |
brokerIP1 | InetAddress for network interface | Should be configured if having multiple addresses |
brokerName | null | broker name |
brokerClusterName | DefaultCluster | this broker belongs to which cluster |
brokerId | 0 | broker id, 0 means master, positive integers mean slave |
storePathCommitLog | $HOME/store/commitlog/ | file path for commit log |
storePathConsumerQueue | $HOME/store/consumequeue/ | file path for consume queue |
mapedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | mapped file size for commit log |
deleteWhen | 04 | When to delete the commitlog which is out of the reserve time |
fileReserverdTime | 72 | The number of hours to keep a commitlog before deleting it |
brokerRole | ASYNC_MASTER | SYNC_MASTER/ASYNC_MASTER/SLAVE |
flushDiskType | ASYNC_FLUSH | {SYNC_FLUSH/ASYNC_FLUSH}. Broker of SYNC_FLUSH mode flushes each message onto disk before acknowledging producer. Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing, achieving better performance. |
参考
quick-start
cli-admin-tool
name-server-address
http://rocketmq.apache.org/docs/rmq-deployment/