{"id":26109482,"url":"https://github.com/dyrnq/springcloud-rocketmq-example","last_synced_at":"2026-04-24T09:33:03.816Z","repository":{"id":258085460,"uuid":"869269149","full_name":"dyrnq/springcloud-rocketmq-example","owner":"dyrnq","description":"POC new features of rocketmq5","archived":false,"fork":false,"pushed_at":"2026-04-17T10:36:54.000Z","size":137,"stargazers_count":0,"open_issues_count":24,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-17T12:30:25.965Z","etag":null,"topics":["rocketmq","springcloud","springcloudalibaba"],"latest_commit_sha":null,"homepage":"https://github.com/dyrnq/docker-rocketmq","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dyrnq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-08T02:34:49.000Z","updated_at":"2026-01-18T07:14:11.000Z","dependencies_parsed_at":"2024-11-11T18:28:40.971Z","dependency_job_id":"2bbdd14e-185f-4c05-9e95-763371157045","html_url":"https://github.com/dyrnq/springcloud-rocketmq-example","commit_stats":null,"previous_names":["dyrnq/springcloud-rocketmq-example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dyrnq/springcloud-rocketmq-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dyrnq%2Fspringcloud-rocketmq-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dyrnq%2Fspringcloud-rocketmq-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dyrnq%2Fspringcloud-rocketmq-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dyrnq%2Fspringcloud-rocketmq-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dyrnq","download_url":"https://codeload.github.com/dyrnq/springcloud-rocketmq-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dyrnq%2Fspringcloud-rocketmq-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32216925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T08:24:32.376Z","status":"ssl_error","status_checked_at":"2026-04-24T08:24:26.731Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rocketmq","springcloud","springcloudalibaba"],"created_at":"2025-03-09T23:11:02.327Z","updated_at":"2026-04-24T09:33:03.578Z","avatar_url":"https://github.com/dyrnq.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# springcloud-rocketmq-example\n\nPOC new features of rocketmq5\n\n| module             | desc                                                                                 |\n|--------------------|--------------------------------------------------------------------------------------|\n| spring-cloud-v2023 | spring-boot=3.4.0  \u003cbr/\u003e spring-cloud=2024.0.0 \u003cbr/\u003e spring-cloud-alibaba=2023.0.3.2 |\n| spring-cloud-v2021 | spring-boot=2.7.18 \u003cbr/\u003e spring-cloud=2021.0.9 \u003cbr/\u003e spring-cloud-alibaba=2021.0.6.0 |\n| sbs                | spring-boot=3.4.0  \u003cbr/\u003e rocketmq-spring-boot-starter=2.3.1                          |\n| sbs-v5             | spring-boot=3.4.0  \u003cbr/\u003e rocketmq-v5-client-spring-boot-starter=2.3.1                |\n| client             | rocketmq-client=5.3.1                                                                |\n| client-v5          | rocketmq-client-java=5.0.7                                                           |\n\n| scripts                               | desc                                               |\n|---------------------------------------|----------------------------------------------------|\n| scripts/run-containers-controller.sh  | 1 namesrv, 1 controller, 2 group 1m1s, 2 proxy     |\n| scripts/run-containers.sh             | 1 namesrv, 2 group 1m1s                            |\n| scripts/run-containers-raft.sh        | 1 namesrv, 1 group dLeger(3)                       |\n| scripts/run-containers-local-proxy.sh | 1 namesrv, 1 controller, 2 group 1m1s, local proxy |\n## 2m2s\n\n```bash\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin clusterList -n n1:9876\n#Cluster Name           #Broker Name            #BID  #Addr                  #Version              #InTPS(LOAD)     #OutTPS(LOAD)  #Timer(Progress)        #PCWait(ms)  #Hour         #SPACE    #ACTIVATED\nDefaultCluster          q1               0     192.168.88.123:11911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  0-0(0.0w, 0.0, 0.0)               0  480097.14     0.0100          true\nDefaultCluster          q1               1     192.168.88.123:12911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  2-0(0.0w, 0.0, 0.0)               0  480097.14     0.0100         false\nDefaultCluster          q3               0     192.168.88.123:13911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  1-0(0.0w, 0.0, 0.0)               0  480097.14     0.0100          true\nDefaultCluster          q3               1     192.168.88.123:14911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  3-0(0.0w, 0.0, 0.0)               0  480097.14     0.0100         false\n\n\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin updateTopic -n n1:9876 -c DefaultCluster -t hello -r 3 -w 3\ncreate topic to 192.168.88.123:11911 success.\ncreate topic to 192.168.88.123:13911 success.\nTopicConfig [topicName=hello, readQueueNums=3, writeQueueNums=3, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false, attributes={}]\n\n\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin topicStatus -n n1:9876 -t hello\n#Broker Name                      #QID  #Min Offset           #Max Offset             #Last Updated\nq1                         0     0                     0                       \nq1                         1     0                     0                       \nq1                         2     0                     0                       \nq3                         0     0                     0                       \nq3                         1     0                     0                       \nq3                         2     0                     0                       \n\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin updateTopic -n n1:9876 -c DefaultCluster -t my -r 2 -w 2\ncreate topic to 192.168.88.123:11911 success.\ncreate topic to 192.168.88.123:13911 success.\nTopicConfig [topicName=my, readQueueNums=2, writeQueueNums=2, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false, attributes={}]\n\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin topicStatus -n n1:9876 -t my\n#Broker Name                      #QID  #Min Offset           #Max Offset             #Last Updated\nq1                         0     0                     0                       \nq1                         1     0                     0                       \nq3                         0     0                     0                       \nq3                         1     0                     0                       \n\n\nmqadmin updateTopic -n n1:9876 -c DefaultCluster -t book -r 1 -w 1\ncreate topic to 192.168.88.123:11911 success.\ncreate topic to 192.168.88.123:13911 success.\n\nroot@f2b36aa77e34:/opt/rocketmq/bin# mqadmin topicStatus -n n1:9876 -t book\n#Broker Name                      #QID  #Min Offset           #Max Offset             #Last Updated\nq1                         0     0                     0                       \nq3                         0     0                     0                       \n```\n\n`-w [arg] -r [arg]` for every broker instance, broker default `defaultTopicQueueNums=8`.\n\n## 2group-raft\n\n\u003e 1group-raft ≈ 1m2s\n\n```bash\nroot@c48216352093:/opt/rocketmq/bin# mqadmin clusterList -n n1:9876\n#Cluster Name           #Broker Name            #BID  #Addr                  #Version              #InTPS(LOAD)     #OutTPS(LOAD)  #Timer(Progress)        #PCWait(ms)  #Hour         #SPACE    #ACTIVATED\nRaftCluster             RaftNode00              0     192.168.88.128:11911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  0-0(0.0w, 0.0, 0.0)               0  480099.47     0.0100          true\nRaftCluster             RaftNode00              2     192.168.88.128:12911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  1-0(0.0w, 0.0, 0.0)               0  480099.47     0.0100         false\nRaftCluster             RaftNode00              3     192.168.88.128:13911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  2-0(0.0w, 0.0, 0.0)               0  480099.47     0.0100         false\nRaftCluster             RaftNode01              0     192.168.88.128:14911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  0-0(0.0w, 0.0, 0.0)               0  480099.47     0.0100          true\nRaftCluster             RaftNode01              2     192.168.88.128:15911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  3-0(0.0w, 0.0, 0.0)               0  480099.47     0.0100         false\nRaftCluster             RaftNode01              3     192.168.88.128:16911   V5_3_0                 0.00(0,0ms)       0.00(0,0ms)  604757-0(0.0w, 0.0, 0.0)            0  480099.47     0.0100         false\n```\n\n## conclusion\n\n- replication= slave+1\n- 数据安全 = 多副本机制(ms或者raft,raft实质上也是ms,与ms不同的是实现了自动选举leader,可以理解为动态的ms)\n- 高吞吐 ≈ 分区负载 = 多组集群\n- 高可用 = （多组ms或者多组raft）\u0026\u0026 master保活\n- 同一组内ms或者同一组内raft,brokerName相同,brokerId不同,也就是说一组ms（或者raft)对外身份(brokerName)一致，对内身份(brokerId)不同\n\n| 模式                              | 说明                                                                                                                                                                                                                                                                                                                                                                                                             |\n|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 单组节点单副本模式                |                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| 多组节点（集群）单副本模式        | 一个集群内全部部署 Master 角色，不部署Slave 副本，例如2个Master或者3个Master，这种模式的优缺点如下： \u003cbr/\u003e优点：配置简单，单个Master宕机或重启维护对应用无影响，在磁盘配置为RAID10时，即使机器宕机不可恢复情况下，由于RAID10磁盘非常可靠，消息也不会丢（异步刷盘丢失少量消息，同步刷盘一条不丢），性能最高； \u003cbr/\u003e缺点：单台机器宕机期间，这台机器上未被消费的消息在机器恢复之前不可订阅，消息实时性会受到影响。 |\n| ~~多节点~~多组节点（集群）多副本模式-异步复制 | 每个Master配置一个Slave，有多组 Master-Slave，HA采用异步复制方式，主备有短暂消息延迟（毫秒级），这种模式的优缺点如下：  \u003cbr/\u003e优点：即使磁盘损坏，消息丢失的非常少，且消息实时性不会受影响，同时Master宕机后，消费者仍然可以从Slave消费，而且此过程对应用透明，不需要人工干预，性能同多Master模式几乎一样；  \u003cbr/\u003e缺点：Master宕机，磁盘损坏情况下会丢失少量消息。                                                |\n| ~~多节点~~多组节点（集群）多副本模式-同步双写 | 每个Master配置一个Slave，有~~多对~~多组 Master-Slave，HA采用同步双写方式，即只有主备都写成功，才向应用返回成功，这种模式的优缺点如下：  \u003cbr/\u003e优点：数据与服务都无单点故障，Master宕机情况下，消息无延迟，服务可用性与数据可用性都非常高；  \u003cbr/\u003e缺点：性能比异步复制模式略低（大约低10%左右），发送单个消息的RT会略高，且目前版本在主节点宕机后，备机不能自动切换为主机。                                                |\n\n\n\n## ref\n- \u003chttps://rocketmq.apache.org/zh/docs/deploymentOperations/01deploy/#cluster%E6%A8%A1%E5%BC%8F%E9%83%A8%E7%BD%B2\u003e\n- \u003chttps://github.com/TencentCloud/rocketmq-demo\u003e\n- \u003chttps://github.com/apache/rocketmq-spring\u003e\n- \u003chttps://github.com/apache/rocketmq-clients\u003e\n- \u003chttps://github.com/alibaba/spring-cloud-alibaba\u003e\n- \u003chttps://github.com/apache/rocketmq\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdyrnq%2Fspringcloud-rocketmq-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdyrnq%2Fspringcloud-rocketmq-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdyrnq%2Fspringcloud-rocketmq-example/lists"}