RocketMQ

消息队列作为高并发系统的组件之一,能够帮助业务系统解构提高开发效率和系统稳定性。

优势:

  • 削峰填谷:解决瞬时写压力导致的消息丢失、系统崩溃等问题
  • 系统解耦:处理不同重要程度和不同能力级别系统之间的消息
  • 提升性能:当存在一对多调用是,可以发一条消息给消息系统,让消息系统通知相关系统
  • 蓄流压测:可以堆积一定的消息量来压测

RocketMQ从部署到应用(Golang)

安装RocketMQ

官方地址

# ls build-image.sh Dockerfile-alpine Dockerfile-centos scripts update.sh

创建RocketMQ镜像

sh build-image.sh RMQ-VERSION BASE-IMAGE

RMQ-VERSION

BASE-IMAGE支持centos,alpine两种方式

我们使用

sh build-image.sh 4.7.1 alpine

构建时间有点长,需要耐心等待。

当构建完成之后会提示

Successfully built 128108c2e50d Successfully tagged apacherocketmq/rocketmq:4.7.1-alpine

那么我们就能查询到镜像

# docker images |grep mq apacherocketmq/rocketmq 4.7.1-alpine 128108c2e50d 4 9 seconds ago 145MB

生成配置

# ls CONTRIBUTING.md image-build LICENSE NOTICE product README.md stages stage.sh templates

生成了stages目录,里面存放配置模板文件

# ls data kubernetes play-docker-compose.sh play-docker.sh play-kubernetes.sh ssl docker-compose play-consumer.sh play-docker-dledger.sh play-docker-tls.sh play-producer.sh

1、单机

./play-docker.sh alpine

2、docker-compose

./play-docker-compose.sh

3、kubernetes集群

./play-kubernetes.sh

4、Cluster of Dledger storage(RocketMQ需要4.4.0版本以上)

./play-docker-dledger.sh

5、TLS

./play-docker-tls.sh ./play-producer.sh ./play-consumer.sh

我这里选择的是单机部署,可以看到生成了两个容器

验证RocketMQ启动成功

1、使用命令 docker ps|grep rmqbroker 找到RocketMQ broker的容器id

2、使用命令 docker exec -it 5b557ea1e6be ./mqadmin clusterList -n {nameserver_ip}:9876 验证RocketMQ broker工作正常

#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE DefaultCluster 5b557ea1e6be 0 172.17.0.8:10911 V4_7_1 0.00(0,0ms) 0.00(0,0ms) 0 447225.46 -1.0000

升级

cd image-build ./update.sh

安装GUI

RocketMQ从部署到应用(Golang)

golang client使用问题

由于使用的docker服务启动,broker的地址是内网地址,需要将地址修改为外网地址

# vi ../confbroker.conf

RocketMQ从部署到应用(Golang)

在文件中添加 brokerIP1=xxx.xxx.xxx.xxx

然后重启broker, docker restart 5b557ea1e6be

这里需要去修改启动脚本 ./play-docker.sh 里的start_namesrv_broker() 函数中的docker启动命令,在mybroker后面添加-c ../conf/broker.conf

${TAG_SUFFIX} sh mqbroker -c ../conf/broker.conf

这样查看cluster会发现Address变成外网地址。

client-go Topic

client-go 生产者

panic(err) } }

client-go 消费者

 
 
转载:
https://www.cnblogs.com/sindragosa/p/14262100.html

相关文章:

  • 2021-12-18
  • 2021-09-05
  • 2021-09-11
  • 2021-06-23
  • 2021-07-02
  • 2021-10-10
  • 2022-12-23
猜你喜欢
  • 2021-05-20
  • 2022-12-23
  • 2022-12-23
  • 2021-04-13
  • 2021-11-18
  • 2021-07-13
  • 2021-10-17
相关资源
相似解决方案