Apache RocketMQ 单机部署

本贴最后更新于 462 天前,其中的信息可能已经时移世改

前言

这篇文章以 4.3.0 版本为标准进行讲述在 Linux 下部署 RocketMQ 单机实例,在此之前需要已配置 Java 环境。

apache RocketMQ 是阿里巴巴在 2016 年 11 月捐赠给了 apache 基金会并于 2017 年 9 月顺利毕业成为 apache 顶级项目。

下载程序包

直接使用一般就下载已经编译好的二进制文件就好了,下载好以后

> unzip rocketmq-all-4.3.0-bin-release.zip
> cd rocketmq-all-4.3.0-bin-release/

启动 name server

> nohup sh bin/mqnamesrv &

tail 一下日志看看是否已经启动成功
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

启动 Broker

> nohup sh bin/mqbroker -n localhost:9876 &

tail 一下日志看看是否已经启动成功
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...

发送消息和接收消息

为了简单测试下,在发送/接收消息之前我们需要设置 NAMESRV_ADDR 环境变量
> export NAMESRV_ADDR=localhost:9876

发送消息,测试用例中的方式是使用 for 循环发送了 1000 条消息
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...

接收消息
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
SendResult [sendStatus=SEND_OK, msgId= ...

关闭服务

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

到此,我们已经完成了一个简单的部署以及消息的发送和接收,但是这只是在内网下进行的收发消息。

FAQ

怎么修改 name server 和 broker 的启动内存?

一开始按照官网的步骤来操作往往会直接启动不起来,提示内存不足,那是因为 name server 和 broker 默认的启动 JVM 内存是 4G,而内存在不够的情况下自然就启动失败了。

这时候需要修改 name server 和 broker 的启动内存参数,
broker 的启动内存参数在 runbroker.sh 下修改,windows 下则是 runbroker.cmd
name server 的启动内存参数是在 runserver.sh 下修改,windows 下则是 runserver.cmd

需要配置外网访问要怎么配置呢?

在网上见过很多同学在配置外网访问的时候出现问题,得到的提示大多是
No Topic Route Info
这种提示一般都是连接失败了,
1.broker 没有允许自动创建 topic,且发送消息对应的 topic 不存在
2.broker 没有正确的连接到 name server
3.product 没有正确的连接到 name server

producer.setVipChannelEnabled(false);

消费者关闭 VIP 通道:

consumer.setVipChannelEnabled(false);

关闭 VIP 通道为什么就可以了呢,是因为 VIP 通道占用了一个端口,10909 端口,而服务器的 10909 端口没有对外开放,所以导致失败了。

配置文件

这是我的 broker.properties 配置文件

brokerClusterName = DefaultCluster  
brokerName = broker-a  
brokerId = 0  
deleteWhen = 04  
fileReservedTime = 48  
brokerRole = ASYNC_MASTER  
flushDiskType = ASYNC_FLUSH  

brokerIP1=172.17.59.146  
brokerIP2=172.17.59.146  
namesrvAddr=172.17.59.146:5776  
autoCreateTopicEnable=true  

因为我没有使用默认的 9876 端口,所以也有一个 name server 的配置文件,namesrv.conf

listenPort=5776

也可以直接下载我的 broker.propertiesnamesrv.conf

使用自己的配置文件启动 name server 和 broker 的时候都是添加一个指定文件的参数 -c 文件路径

到目前为止,一个简单的 apache RocketMQ 单机实例已经部署好了,开始愉快的消息队列旅程吧!

更多内容可以查看我的博客

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等。

    1146 引用 • 3284 回帖 • 520 关注
  • RocketMQ
    13 引用 • 9 回帖
  • Apache
    26 引用 • 31 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2625 引用 • 8025 回帖 • 774 关注
回帖
请输入回帖内容...