欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Window搭建部署RocketMQ步骤详解

程序员文章站 2022-04-06 13:28:29
序 以前简单用过activemq但是公司项目上使用的是rocketmq,所以准备多花点时间在这上面,搞懂项目的配置使用。 看了很多资料,先说说我自己对rocketm...


以前简单用过activemq但是公司项目上使用的是rocketmq,所以准备多花点时间在这上面,搞懂项目的配置使用。

看了很多资料,先说说我自己对rocketmq的简单理解。不管是我们写的消费者还是生产者都属于客户端,而我们需要安装rocketmq,这是属于服务端。和activiemq、zookeeper类似,消费者、生成者、服务端(nameserver)之间是采取观察者模式实现。

在操作系统上安装rocketmq,启动服务端nameserver、启动broker,书写consumer代码,运行消费者。书写producer代码,运行生产者。

基本简单逻辑是这样的,当然其中还有很多细节。平时在测试时我们都在window上使用,踩了点坑,成功完成。

安装运行

1、下载

建议下载发行版本,我试过自己编译,不知道为何报错了。

解压出来如下:

2、启动

nameserver

在启动之前需要配置系统环境,不然会报错。配置完成记得重启电脑

please set the rocketmq_home variable in your environment!

系统环境变量名:rocketmq_home

每个人不一样,对比如上我的路径—-变量值:d:\rocketmq

进入window命令窗口,进入bin目录下,执行

start mqnamesrv.cmd

如上则nameserver启动成功。使用期间,窗口不要关机。

broker

同理,再次开一个命令窗口,进入bin目录下,输入

start mqbroker.cmd -n localhost:9876

如上的 ip+port 是nameserver的进程,因为nameser安装启动在本地,所以这里的 ip 是 localhost。

运行如上命令,可能会报如下错误。找不到或无法加载主类

如果出此情况,打开bin-->runbroker.cmd,修改%classpath%成

"%classpath%"

保存再次执行如上命令。执行成功后,窗口并不会显示什么,只是一个空窗口,代表成功。

书写代码

依赖rocketmq

<dependency>
<groupid>org.apache.rocketmq</groupid>
<artifactid>rocketmq-client</artifactid>
<version>4.2.0</version>
</dependency>

1、consumer

public class consumer {
public static void main(string[] args) throws mqclientexception {
//这里填写group名字
defaultmqpushconsumer consumer = new defaultmqpushconsumer("my-group-name-a");
//nameserver地址
consumer.setnamesrvaddr("localhost:9876");
//1:topic名字 2:tag名字
consumer.subscribe("topic-name-a", "tag-name-a");
consumer.registermessagelistener(new messagelistenerconcurrently() {
@override
public consumeconcurrentlystatus consumemessage(
list<messageext> msgs, consumeconcurrentlycontext context) {
for (messageext msg : msgs) {
system.out.println(new string(msg.getbody()));
}
return consumeconcurrentlystatus.consume_success;
}
});
consumer.start();
system.out.println("consumer started!");
}
}

先运行起来

2、producer

注意匹配相应参数:group topic tag

public class producer {
public static void main(string[] args) throws mqclientexception, remotingexception, interruptedexception, mqbrokerexception {
defaultmqproducer producer = new defaultmqproducer("my-group-name-a");
producer.setnamesrvaddr("localhost:9876");
producer.start();
message message = new message("topic-name-a","tag-name-a","message : my blog address guozh.net".getbytes());
producer.send(message);
system.out.println("message sended");
producer.shutdown();
}
}

再次运行 producer。

然后去 consumer 看看是否收到消息。

监控平台

和其他的mq一样,这里也提供了window版本可视化的监控和 linux监控。可以看到消息消费的具体情况,但是其实在实际开发过程中,window显示的界面数据非常少,看不到多少内容。所以实际项目中都是看 linux 数据。

我们这边项目看mq消费情况也是在linux上部署查看。

但是可以学习学习,为linux的安装拓展画面感。

1、下载

其实这里提供了安装部署的方法,可以根据实际情况来

所以一步一步来吧,首先修改配置文件。修改application.properties,具体位置如下

rocketmq-console\src\main\resources

主要如上两处需要修改,平台部署的端口。我这里 8080 没被使用,这里就用 8080。下面是nameserver的启动位置,根据自己实际情况填写即可。

2、启动
首先,上面的 tips 也说了,看看自己的maven镜像是不是阿里云的,不然下载jar可能下载不下来或者很慢,这里不用说了。

进入命令窗口,进入rocketmq-console目录,执行。

mvn clean package -dmaven.test.skip=true

build成功后,再次执行

java -jar target/rocketmq-console-ng-1.0.0.jar

完成后,进入网址即可,比如我这是 localhost:8080

ok!完成,估计后面会好好的学习rocketmq。