RocketMQ让少年一夜白了头

RocketMQ学习指南

简单介绍

啥子背景这些就不多说了,一句带过,由阿里开发,交由Apache孵化,是Apache的一个顶级项目 (反正就是很牛逼),抗过阿里的双11,底层Java开发,反正就是很牛逼,

  • Producer:消息生产者,负责消息的生产

  • Consumer:消息消费者

    • Push Consumer:服务端向消费者推送消息

    • Pull Consumer:消费者向服务端拉取消息

    • Consumer Group:一集合的消费者,通常消费指定一类的消息

  • NameServer:集群架构中的组织协调员

    • 收集broker的工作情况

    • 只起调度分配作用,不存储,不处理消息

  • Broker:就是队列的核心所在

    • 负责接收消息,发送消息

    • 默认10S向NameServer报告自身情况,超过两分钟未报告默认宕机

  • Topic:根据Topic区分不同类型的消息

docker安装

通过搜索我们就下载start最多的那个吧

  • 下载镜像,我们下载star比较高的

    • docker pull foxiswho/rocketmq:server-4.3.2 docker pull foxiswho/rocketmq:broker-4.3.2

  • 创建nameserver容器(对应挂载目录自己创建准备好)

    • docker create -p 9876:9876 --name rmqserver \ -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \ -e "JAVA_OPTS=-Duser.home=/opt" \ -v /ninja_data/rocketmq/nameserver/logs:/opt/logs \ -v /ninja_data/rocketmq/nameserver/store:/opt/store \ foxiswho/rocketmq:server-4.3.2

  • 创建broker容器(对应挂载目录自己创建准备好)

    • docker create -p 10911:10911 -p 10909:10909 --name rmqbroker \ -e "JAVA_OPTS=-Duser.home=/opt" \ -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \ -v /ninja_data/rocketmq/broker/broker.conf:/etc/rocketmq/broker.conf \ -v /ninja_data/rocketmq/broker/logs:/opt/logs \ -v /ninja_data/rocketmq/broker/store:/opt/store \ foxiswho/rocketmq:broker-4.3.2

  • 启动两个容器

    • docker start rmqbroker rmqserver

  • 分别查看一下对应的启动日志

    • docker logs rmqbroker

    • docker logs rmqserver

  • 我们在安装一个UI管理工具

    • docker pull styletang/rocketmq-console-ng

    • docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.17.0.3:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng

    • (备注:)运行容器中的addr地址,是安排rmqserver服务docker的ip

      • docker exec -it rmqserver bash //进入rmqserver服务的docker

      • cat /etc/hosts //得到ip,将其填充到容器运行命令中即可,其实后面在UI页面也可以改。

  • 到这里基本上就已经部署完成了,下面让我们一起来玩玩吧。

  • 记得访问下服务器8080端口,会出现相应的管理页面且无报错

我觉得你在无中生有

当我发现,我用JavaApi访问的时候,抛出连接超时异常,???

  • 我第一时间想到我防火墙是否开放对应端口,索性一锅端,砸烂防火墙

  • 然后我重启镜像,wtf ?还是不行,我brocker.conf难道没有生效?

  • 进入容器内部,一探究竟,这一探就坏事了啊,我他妈发现映射路径完全对不上

  • 我又心生一计,我去你妈的文件映射,端了,容器内部配置文件启动

  • 我又发现在指定目录下的下下下下级目录下有一个长的有点像配置文件的玩意在涩涩发抖

  • 虽然长的有点像,但除了他也别别的文件更像了,操作一盘,一梭子配置追加

  • 回到bin目录 ,配置文件重启容器,???Address alread use,以我三年级的英语水平我读懂了这句话,难道我宿主机配置其实一直在默默发力,我收拾了一下有点崩的心态回到宿主机

  • cat一下配置,发现文件开头一个i在角落瑟瑟发抖,呵,我僵硬的笑了。

  • 进入宿主机,停止容器,重启容器,行云流水 查看启动日志,一切正常

  • 再次测试,看到UI页面的success,我心神领会的笑了

  • 这一通操作让我发现一个问题,这容器内的文件文件映射路径都是错的,他怎么读取我宿主机上的配置文件,我怀揣着这个疑惑,缓缓睡去,少年心想,难道这是魔法?

 

猜你喜欢

转载自www.cnblogs.com/msi-chen/p/12920703.html