peng-huang-ch commented on issue #88:
URL: https://github.com/apache/rocketmq-docker/issues/88#issuecomment-1719541776
`docker-compose.yml`
```sh
version: "3"
services:
#Service for nameserver
rmqnamesrv:
image: apache/rocketmq:5.1.3
container_name: rmqnamesrv
ports:
- 9876:9876
environment:
JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
restart: unless-stopped
rmqbroker:
image: apache/rocketmq:5.1.3
container_name: rmqbroker
depends_on:
- rmqnamesrv
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
volumes:
- ./data/broker/logs:/home/rocketmq/logs
- ./data/broker/store:/home/rocketmq/store
- ./conf/broker.conf:/opt/conf/broker.conf
command: sh mqbroker -c /opt/conf/broker.conf
rmqproxy:
image: apache/rocketmq:5.1.3
container_name: rmqproxy
depends_on:
- rmqnamesrv
ports:
- 8081:8081
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms512M -Xmx512M -Xmn128m"
volumes:
- ./data/proxy/logs:/home/rocketmq/logs
- ./data/proxy/store:/home/rocketmq/store
- ./conf/proxy.conf:/opt/conf/proxy.conf
command: sh mqbroker -c /opt/conf/proxy.conf --enable-proxy
dashbord:
image: apacherocketmq/rocketmq-dashboard:1.0.0
ports:
- 18080:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876
-Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'"
depends_on:
- rmqnamesrv
```
broker.conf & proxy.conf
```conf
# 所属集群名字
brokerClusterName=rmqnamesrv
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId=0
# nameServer地址,分号分割
#namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
namesrvAddr=rmqnamesrv:9876
# 启动IP,如果 docker 报
com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to
<192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1
设置宿主机IP,不要使用docker 内部IP
brokerIP1=192.168.31.149
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=99
# 存储路径
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存储路径
#
storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消费队列存储
#
storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存储路径
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 文件存储路径
#
storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 文件存储路径
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=12
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
```
启动日志:
```sh
docker compose logs --tail=1000 rmqnamesrv
rmqnamesrv | OpenJDK 64-Bit Server VM warning: Using the DefNew young
collector with the CMS collector is deprecated and will likely be removed in a
future release
rmqnamesrv | OpenJDK 64-Bit Server VM warning:
UseCMSCompactAtFullCollection is deprecated and will likely be removed in a
future release.
rmqnamesrv | The Name Server boot success. serializeType=JSON, address
0.0.0.0:9876
docker compose logs --tail=1000 rmqproxy
rmqproxy | OpenJDK 64-Bit Server VM warning: Using the DefNew young
collector with the CMS collector is deprecated and will likely be removed in a
future release
rmqproxy | OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection
is deprecated and will likely be removed in a future release.
rmqproxy | Thu Sep 14 12:24:26 UTC 2023 rocketmq-proxy startup successfully
```
使用 `dashbord` 可以正常的发送消息,但是使用
[producer](https://github.com/fengmk2/rocketmq-clients/blob/master/golang/example/producer/normal/main.go)
会报错
```
current message type not match with topic accept message types.
```
似乎 [RocketMQ 5.0 引入了 TopicMessageType
的概念](https://github.com/apache/rocketmq/blob/develop/docs/cn/Example_CreateTopic.md),但是调用了
updateTopic 好像还是有问题
```sh
sh mqadmin updateTopic -n 127.0.0.1:9876 -t txs -c rmqnamesrv -a
+message.type=NORMAL
```
希望有人能帮忙解决下,😄
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]