温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Apache RocketMQ如何实现单机部署

发布时间:2021-12-17 14:28:02 来源:亿速云 阅读:140 作者:小新 栏目:云计算

这篇文章主要介绍Apache RocketMQ如何实现单机部署,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

下载程序包

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

> 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

  • 对于情况1,在启动broker的时候添加autoCreateTopicEnable=true参数就好了。

  • 情况2呢,有可能是name server不存在或者是端口冲突,具体可以看日志的报错原因。

  • 情况3的话,一般是端口原因,如果在服务器上本地收发消息都正常但是到了用客户端sdk发消息的时候失败了可以首先查看一下端口本地ping服务器的9876端口和10911端口是否正常,如果正常可以关闭vip通道再次尝试,以JAVA客户端的话就是下面这样
    生产者关闭VIP通道:

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.properties和namesrv.conf

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

以上是“Apache RocketMQ如何实现单机部署”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI