RocketMQ

关系梳理

对于RocketMQ的生产者、消息、消费者、消费者分组、主题、队列、订阅关系的梳理

主题: 主题是订阅的首要关系,不管是生产者还是消费者都是和主题进行关联订阅,而主题内是由队列组成,队列拥有读、写等权限控制,主题通过队列进行横向扩展,来提要主题的性能,主题是存储消息的实际。

消息: 消息是队列内信息流通的最小粒子,消息本身拥有一定的特性,如延迟消息等。

生产者: 生产者通过向指定的主题发送消息完成生产任务,更多理解暂时没有

消费者: 消费者必定需要提起续费这分组,因为消费者与主题之间的订阅关系是由消费者分组完成的,换句话说,消费者与主题没有直接关系,与主题有直接关系的是消费者组,消费者组通过订阅关系与主题构建关联,而消费者属于消费者组,那么在消费者组得到消息之后,通过进一步的消息订阅关系分发给组下面的消费者,需要注意的是,在同一个消费者分组下的消费者,其订阅关系必须保持一致性,如果多个消费者分组订阅同一个主题,那么这个主题的消息会分发给所有的消费者分组。

alt

RocketMQ与Systemd

RocketMQ的安装比较简单,只需要提供了JAVA_HOME环境,之后运行对于的脚本即可,所以这里主要介绍的RocketMQ与Systemd的配置,结合Shell脚本,一次性的启用namsesrv和borker以及web管理工具rocketmq-dashboard

版本

Java: openjdk-11

RocketMQ: rocketmq-all-5.0.0-bin-release.zip下载

RocketMQ Dashboard: rocketmq-dashboard-rocketmq-dashboard-1.0.0.tar.gz 源码地址,该项目需要自己编译成jar包

在下载了RocketMQ的二进制包之后,解压到指定位置,而后配置对于的namesrvborker服务,systemd的服务配置在/usr/lib/systemd/system/或者/etc/systemd/system/目录下

rmq_namesrv.service

[Unit]
Description=rocketmq namesrv
After=network.target

[Service]
Type=simple
ExecStart=/opt/rocketmq-all-5.0.0-bin-release/bin/mqnamesrv
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=//opt/rocketmq-all-5.0.0-bin-release/bin/mqshutdown namesrv

[Install]
WantedBy=mulitiple-rmq-namesrv.target

rmq_borker.service

[Unit]
Description=rocketmq broker
After=network.target

[Service]
Type=simple
ExecStart=/opt/rocketmq-all-5.0.0-bin-release/bin/mqbroker -n localhost:9876 --enable-proxy
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/opt/rocketmq-all-5.0.0-bin-release/bin/mqshutdown broker

[Install]
WantedBy=multiple-rmq-broker.target

在配置了这两个服务之后,即可通过systemctl start/stop/restart来执行服务了,由于每次都需要启动namesrvborker服务还有web管理工具过于麻烦,所以引入shell脚本进行处理

rocketmq.shell

#!/bin/bash

instruct=$1

echo $instruct

case $instruct in
 'start')
   systemctl start rmq_namesrv
   systemctl start rmq_borker
   export NAMSESRV_ADDR=localhost:9876
   nohup java -jar /opt/rocketmq-dashboard-rocketmq-dashboard-1.0.0/target/rocketmq-dashboard-1.0.0.jar > /root/rocketmq-dashboard.log &
   echo $! > /root/rmq-d-pid
   echo "RocketMQ Start SUCCESS PID: " + $!
 ;;

 'stop')
   systemctl stop rmq_namesrv
   systemctl stop rmq_borker
   PID=$(cat /root/rmq-d-pid)
   kill -9 ${PID}
   echo "RocketMQ Stop SUCCESS"
 ;;

 *)
   echo "Input instruct error"
 ;;
esac

可以通过执行该shell脚本对RocketMQ进行启动和关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值