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: dev-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org