RocketMQ入门实践与踩雷

RocketMQ的安装与启动(基于Linux与JDK1.8)

下载项目

首先Java工程选择对应的RocketMQ版本,具体参考以下两图:

  • 举例:SpirngCloudAlibabaVersion为2.2.9RELEASE,MQ则选择4.9.4版本。
  • 举例:如果是SpringBoot项目,如我的SpringBoot项目为2.2.3版本,对应SpirngCloudAlibaba为2.2.0RELEASE,MQ则选择4.4.0版本。
  • 确定版本后到官网下载(版本号自行修改):https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.9.3/
  • RocketMQ入门实践与踩雷_第1张图片
  • RocketMQ入门实践与踩雷_第2张图片

    安装

    解压并修改启动配置

  • 将下载好的ZIP文件在提前创建好的文件夹上unzip命令解压缩。
  • 赋权操作:执行chmod 777 /rocketmq-all-5.1.2-bin-release/*
  • 因为默认启动配置使用内存较大,对其进行修改。
  • RocketMQ入门实践与踩雷_第3张图片
  • RocketMQ入门实践与踩雷_第4张图片
  • 修改broker.conf
    brokerIP1 = mq远程服务器的IP
    namesrvAddr = mq远程服务器的IP:9876

    启动

    启动namesrv(默认9876端口)

  • 进入路径 cd bin/
  • 后台启动 nohup sh mqnamesrv &
  • 查看日志确认是否启动成功 tail -f ~/logs/rocketmqlogs/namesrv.log
  • 也可以通过端口查看 netstat -an|grep 9876
  • 关闭命令sh mqshutdown namesrv

    启动broker(默认10911端口)

  • 进入路径 cd bin/
  • 后台启动 nohup ./mqbroker -n localhost:9876 &
  • 查看日志确认是否启动成功 tail -f ~/logs/rocketmqlogs/broker.log
  • 关闭命令sh mqshutdown broker

    测试

    # 声明一个 namesrv 的地址
    export NAMESRV_ADDR=localhost:9876
    # 发送消息
    ./tools.sh org.apache.rocketmq.example.quickstart.Producer
    # 声明一个 namesrv 的地址
    export NAMESRV_ADDR=localhost:9876
    # 接收消息
    ./tools.sh org.apache.rocketmq.example.quickstart.Consumer

DashBoard的搭建

//可视化页面的搭建


SpringBoot工程接入RocketMQ

//TODO最佳实践


部署投产过程中踩的雷

本机SpringBoot项目无法往远程服务器的RocketMQ发送消息;

  • 具体报错:Producer无法发送消息且Client日志一直打印如下消息:

    RocketMq closeChannel: close the connection to remote address[] 
  • 解决方案:

    1.Client为Java工程本地启动。
    2.确认MQ服务与Client版本匹配。
    3.MQ服务机的9876与10911端口安全组需要开放给Clinet的ip,同时MQ服务机可以curl通Client的ip

    本机SpringBoot项目无法消费消息;

  • 具体报错:本机项目Producer往远程服务器MQ发送消息状态OK,且根据MessageId可以在dashboard查询到消息,但是本机Client无法消费到消息。
  • 解决方案1:

    1.进入dashboard,确认消息对应的topic下的消费组。
    2.RocketMQ分为集群模式和广播模式,集群模式下,topic+tag在一个订阅组内只会被其中一个消费者终端消费,需要确认是否有其他消费者终端消费了该消息。
  • RocketMQ入门实践与踩雷_第5张图片
  • 解决方案2:

    1.远程服务器未创建该topic。
    2.查看话题列表:sh mqadmin topicList -n 127.0.0.1:9876
    3.在bin路径下执行 ./mqadmin updateTopic -n localhost:9876  -b localhost:10911  -t 你的topic名称
    4.或使用该命令启动broker
    nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true  -c ../conf/broker.conf &

    消费者无法注册到MQ的话题的订阅组中(//TODO);

  • 如下两图所示:
    RocketMQ入门实践与踩雷_第6张图片
    RocketMQ入门实践与踩雷_第7张图片

1.参考文章:https://blog.csdn.net/xhmico/article/details/122938904

你可能感兴趣的:(rocketmq消息队列)