美文网首页
RocketMQ初次部署使用总结

RocketMQ初次部署使用总结

作者: poppindevil | 来源:发表于2019-06-11 11:45 被阅读0次

1. 安装

安装RocketMQ

参考RocketMQ官方文档的Quick Start即可,比较简单。可以选择从GitHub上下载后自己编译安装,也可以选择直接编译好的二进制文件来安装。
虽然官方推荐使用Linux/Unix/Mac,但是其实还是可以在Windows下安装的,通过解压出来的bin目录下的各种.cmd后缀的文件即可看出。所以,如果当下只有Windows电脑,也可以来搭建一个用于学习。

安装RocketMQ Console(可选)

我们先了解一下这个Console。它主要是针对RocketMQ所做的一个界面管理工具,方便后期的运维管理,查看当前的MQ使用情况,包括Producer、Consumer、Broker、Topic甚至Msg的管理。当然了,如果你比较喜欢命令行的形式也可以使用bin目录下的mqadmin来去管理。

OK,回到安装话题。首先,访问apache的RocketMQ扩展项目GitHub,下载后直接通过maven编译构建rocketmq-console模块即可得到rocketmq-console-ng-1.0.1.jar。由于该项目是用的Spring Boot,所以直接以jar包的方式运行即可。
如果需要修改端口配置,可以在项目中的src\main\resources目录下的application.properties文件中修改server.port参数。
PS.需要特别注意一下rocketmq.config.isVIPChannel参数,后面会讲到。
PPS.当前使用的RocketMQ版本是4.4.0,RocketMQ-Console版本是1.0.1

2. 运行RocketMQ

运行之前我们先了解几个概念。RocketMQ中有这样几个角色:

  • Producer 消息生产者
  • Consumer 消息订阅者或者消息的消费者
  • NameServer 最上层的管理服务,路由、查找功能
  • Broker 实际消息的中间接收人,存储消息
Linux环境

首先我们要先启动最上层的服务——NameServer
进入bin目录,执行:nohup sh ./mqnamesrv &,并通过tail -f ~/logs/rocketmqlogs/namesrv.log查看日志,这个路径是默认的日志存储路径。确认NameServer是否启动成功。

然后,我们再启动Broker,同理,在bin目录下执行:nohup sh bin/mqbroker -n localhost:9876 &,并通过tail -f ~/logs/rocketmqlogs/broker.log确认Broker是否启动成功。

Windows环境

Windows下指令没有太大变化,分别在bin目录下依次执行start mqnamesrv.cmdstart mqbroker.cmd -n 127.0.0.1:9876来启动NameServer和Broker,这里指令执行时会重新打开两个行的cmd窗口来执行命令,记得不要关闭,不然服务就终止了。

3. 运行Demo

直接使用官方示例或者自己根据官方的QuickStart写一些demo都可以运行,这里不再赘述。

3. 一些碰到的坑

(1). 自己本地通过maven编译RocketMQ-Console时,可以加上-DMaven.test.skip=true命令来跳过自动测试,一方面是缩短打包时间,另一方面,运行测试可能会报错,导致无法打包成功。

(2). 本地运行demo,使用同步方式来发送消息一切正常,改为使用异步方式时就会报错。可以检查一下Producer类中是否在最末加上了producer.shutdown()代码,可以尝试注释后再运行试试,或者在这行代码前加个线程休眠。这种情况的原因是Producer还未能收到异步响应结果时,代码就已经执行到shutdown这里,直接关闭了。

(3). demo访问本地安装的RocketMQ运行正常,访问云服务器上安装的服务时,发现Producer发送消息访问超时。首先检查端口策略是否开通:NameServer服务默认端口9876、Broker服务默认端口10911。如果还不行,检查一下Broker注册到NameServer里面的IP是不是局域网IP,如果是请改成外网IP再重启重新注册。原因是Producer在发送消息时只是向NameServer去查询对应的Broker,拿到对应的IP和端口进行使用,并不是由NameServer来发送消息,所以Broker服务的IP必须以外网形式暴露出去。

(4). 云服务上安装了RocketMQ-Console,结果打开后发现,查不到当前已经运行的Broker,并且刷新页面会提示无法访问10909端口。请检查console中的application.properties中的rocketmq.config.isVIPChannel参数,如果为true,请开通该端口的访问策略,因为10909端口是RocketMQ的消息VIP端口,如果配置为true,console会使用到该端口;另外如果没有用到VIP,可以不开通策略,并在demo中的Producer和Consumer代码中显示的设置VIP为false(默认配置为true),这样也能解决这个问题。

相关文章

  • RocketMQ初次部署使用总结

    1. 安装 安装RocketMQ 参考RocketMQ官方文档的Quick Start即可,比较简单。可以选择从G...

  • RocketMQ 集群部署结构和模式

    1、RocketMQ 集群物理部署结构 RocketMQ 物理部署结构 RocketMQ的部署结构有以下特点: N...

  • RocketMQ产品架构

    RocketMQ产品架构 RocketMQ产品架构部署要求系统部署架构订阅模式 部署要求 消息队列 RocketM...

  • rocketmq总目录

    实战 rocketmq最简单的入门demo rocketmq的常用概念,接口和方法 rocketmq的正式部署 高...

  • RocketMQ学习

    RocketMQ 学习 安装部署** 下载rocketmq解压:下载地址 启动nameserver,进入bin目录...

  • docker-compose安装rocketmq

    部署说明 应用名称端口rocketmq-namesrv9876:9876rocketmq-broker10909:...

  • RocketMQ demo

    解决连接超时问题 我们采用 Docker 部署了 RocketMQ 服务,此时 RocketMQ Broker 暴...

  • RocketMQ部署以及调优

    RocketMQ的部署 RocketMQ的部署,这里不做太多的说明,因为官方文档上面写的已经非常清晰了,可以照着官...

  • RocketMQ环境搭建

    RocketMQ单机部署流程 1.下载源码包地址 http://rocketmq.apache.org/docs/...

  • RocketMQ 部署

    本节将介绍生产就绪的部署解决方案。一般来说,我们将部署一个弹性的RocketMQ集群,没有单点故障。 先决条件 在...

网友评论

      本文标题:RocketMQ初次部署使用总结

      本文链接:https://www.haomeiwen.com/subject/kwgaxctx.html