rocketmq的使用

第一章 在linux上安装rocketmq



前言

一. rocketmq是什么?

参考 rocketmq官网.

二. 安装步骤

1. 下载源文件或二进制文件 这里以4.7.1版本为例

在这里插入图片描述

2. 解压缩

使用unzip解压缩命令 如果没有的话需要下载命令

yum install -y unzip 
  • 源文件解压缩
    需要添加jdk maven 环境
    maven环境可配置 阿里云 镜像地址
在 settings.xml 配置
<mirror>  
		<id>nexus-aliyun</id>  
		<mirrorOf>central</mirrorOf>    
		<name>Nexus aliyun</name>  
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>  
	</mirror> 
unzip rocketmq-all-4.7.1-source-release.zip (解压)

cd rocketmq-all-4.7.1/ (进入解压目录)

mvn -Prelease-all -DskipTests clean install -U (编译部署)

cd distribution/target/apache-rocketmq (进入指定目录) 在这个目录下的文件就是第二种方式的二进制文件

  • 二进制文件

代码如下(示例):

unzip rocketmq-all-4.7.1-bin-release.zip 

三. 启动RocketMq

1. 本地虚拟机的话,需要修改内存大小

rocketmqlianggel脚本文件默认是设置的8GB内存,如果是本地搭建的虚拟机或买的云服务器没有配置这么大内存,rocketmq 服务会启动失败,需要修改一下配置。
如下有两个文件需要修改

  • bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
调整为(依情况而定)
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  • bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
调整为(依情况而定)
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

2. 启动程序

源文件编译后的话,需要在 distribution/target/rocketmq-4.7.1/rocketmq-4.7.1
二进制文件的话,需要在rocketmq-all-4.7.1-bin-release 目录下执行

  1. Nameserver-服务端 启动完成后可退出
    执行命令 :
nohup sh bin/mqnamesrv > nameserver.log 2>&1 &
  1. Broker-客户端(消费端)启动完成后可退出
    执行命令 :
nohup sh bin/mqbroker -n localhost:9876  > broker.log 2>&1 &

但是如果要加载 conf/broker.conf 文件 一定要加上 -c conf/broker.conf

nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf > broker.log 2>&1 &
  1. 查看启动日志
    Nameserver-服务端
# 上一步指定地址了
tail -f nameserver.log 
tail -f ~/logs/rocketmqlogs/namesrv.log(如果没有指定输入日志地址)

成功在这里插入图片描述

Broker-客户端(消费端)

# 上一步指定地址了
tail -f broker.log 
tail -f ~/root/logs/rocketmqlogs/broker.log(如果没有指定输入日志地址)

成功
在这里插入图片描述

  1. JPS查看是否成功启动
    使用命令 jps 查看内容即为成功
[root@localhost rocketmq-all-4.7.1-bin-release]# jps
517 NamesrvStartup
629 Jps
557 BrokerStartup

四. 测试启动

远程连接linux工具打开两个会话,一个做消息发送方(Producer),一个做消息消费方(Consumer)

  • 在 /etc/profile 下添加地址
export NAMESRV_ADDR=localhost:9876
source /etc/profile  (刷新配置)
  • 打开一个控制台 消息发送方
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  • 打开另一个控制台 消息接收方
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

可以在控制台看到相关信息


五. 关闭RocketMq

关闭rocketMQ

  • Nameserver-服务端
sh bin/mqshutdown namesrv
  • Broker-客户端(消费端)
sh bin/mqshutdown broker

六. RocketMq 监控

下载地址
maven 环境进行打包

mvn clean package -Dmaven.test.skip=true

根据自己jar版本修改启动命令
java -jar rocketmq-console-ng-2.X.X.jar --server.port=8080 --rocketmq.config.namesrvAddr=127.0.0.1:9876

说明:
(1) --server.port=8080 指定web应用的端口 8080
–rocketmq.config.namesrvAddr=127.0.0.1:9876 指定rockemq的nameserver 的地址和端口
以上两个参数可以在项目中的配置文件 rocketmq-console/src/main/resources/application.properties 指定
在这里插入图片描述
(2)启动控制台前需要先启动rocketmq的namesrv和broker 不然控制台项目连接不上rocketmq会报错如下
在这里插入图片描述
页面访问127.0.0.XX:8080
在这里插入图片描述


七. 整合springboot

环境: jdk8 maven

在maven中添加依赖

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

yml配置文件:

rocketmq:
  name-server: 192.168.13.200:9876
  producer:
    group: ml-producer-group

生产者代码:

@RestController
@RequestMapping("/mq/message")
public class MqMessageController {
    private static final Logger log = LoggerFactory.getLogger(MqMessageController.class);

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @RequestMapping("/test")
    public R get(@RequestParam("id") int id) {
        rocketMQTemplate.convertAndSend("ml-topic", "hello world" + id);
        return R.ok();
    }

消费者代码:

@Component
@RocketMQMessageListener(topic = "ml-topic", consumerGroup = "ml-consumer-group")
@Slf4j
public class Consumer implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        log.info(message);
        System.out.println(message);
    }
}

测试结果:
在这里插入图片描述
在这里插入图片描述
心血来潮: 压测一下
在这里插入图片描述

个人理解概念:

namesrc = broker 的注册中心
broker = 处理消息的地方

注意: 以下结论是基于虚拟机安装

  1. 当出现
 RemotingConnectException: connect to <172.17.0.1:10911> failed

的问题的时候是自己client的代码连接不到 broker,导致的原因是:broker部署在虚拟机,并且虚拟双网卡,client无法正常连接服务端.此时需要在broker启动的时候指定namesrvAddr,并一定要加载该配置文件启动

命令: nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf > broker.log 2>&1 &

参考地址

https://www.jianshu.com/p/a79058abeacf
https://www.cnblogs.com/chenyanbin/p/13798952.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐