RocketMQ 入门使用(二)
本文Rocket MQ 入门使用教程是在windows 10 环境下的
一、Rocket MQ下载、安装
1、下载
地址:http://rocketmq.apache.org/release_notes/release-notes-4.3.0/ ,选择Binary进行下载。
2、安装
1、解压已下载的压缩包,如下图所示。
2、配置环境变量ROCKETMQ_HOME,如下图所示。
3、修改配置文件,如下图所示。
进入RocketMQ安装目录下的conf目录,里面有一个broker.conf配置文件。在文件末尾添加两行。
二、启动服务
1、启动name server
在MQ安装目录的bin目录下进入CMD命令行,执行命令(或者双击mqnamesrv.cmd),启动nameserver,成功后会弹出提示框,不要关闭!
start mqnamesrv.cmd
2、启动broker
在bin目录下cmd进入命令行模式,执行命令,启动broker,成功后不要关闭!
start mqbroker.cmd -n 127.0.0.1:9876 -c ../conf/broker.conf autoCreateTopicEnable=true
三、web 管理界面部署
想配置一下RocketMQ的web管理页面,发现网上的资料都是之前版本的说明,导致无法成功配置。
发现https://github.com/apache/rocketmq-externals ,这个git项目上并没有找到rocketmq-console这个目录。
原来是转移到 rocketmq-dashboard 仓库了。
1、下载rocketmq-dashboard
rocketmq-dashboard仓库:https://github.com/apache/rocketmq-dashboard
2、编译打包
这里有一些坑,编译打包时可能会报错。需要把一些插件注释掉!
<artifactId>maven-compiler-plugin</artifactId>
<artifactId>maven-checkstyle-plugin</artifactId>
<artifactId>frontend-maven-plugin</artifactId>
<artifactId>maven-antrun-plugin</artifactId>
注释掉以上plugin后,就可以执行下面命令了。
mvn clean package -Dmaven.test.skip=true
3、启动web管理界面
执行命令:
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
说明:在浏览器中输入 http://127.0.0.1:8888/#/ ,即可查看。
四、入门使用
1、pom 文件添加依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.4.0</version>
</dependency>
2、消息生产者(发送消息)
发送消息步骤:
- 创建消息生产者, 指定生产者所属的组名。
- 指定Nameserver地址。
- 启动生产者。
- 创建消息对象,指定主题、标签和消息体。
- 发送消息。
- 关闭生产者。
代码如下:
package com.linhuaming.rocketmq.demo.producer;
import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;
import java.io.UnsupportedEncodingException;
public class Producer {
public static void main(String[] args) {
DefaultMQProducer producer = new DefaultMQProducer("xiaolin-producer");
producer.setNamesrvAddr("127.0.0.1:9876");
try {
producer.start();
Message message = new Message("topic1","tag1","你好,我是消息2".getBytes("utf-8"));
SendResult send = producer.send(message);
System.out.printf("%s%n", send);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MQClientException e) {
e.printStackTrace();
} catch (MQBrokerException e) {
e.printStackTrace();
} catch (RemotingException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3、消息消费者(接收消息)
接收消息步骤:
- 创建消息消费者, 指定消费者所属的组名。
- 指定Nameserver地址。
- 指定消费者订阅的主题和标签。
- 设置回调函数,编写处理消息的方法。
- 启动消息消费者。
package com.linhuaming.rocketmq.demo.producer;
import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;
import java.io.UnsupportedEncodingException;
public class Producer {
public static void main(String[] args) {
DefaultMQProducer producer = new DefaultMQProducer("xiaolin-producer");
producer.setNamesrvAddr("127.0.0.1:9876");
try {
producer.start();
for(int i=0; i<10000000; i++){
int num = i + 1;
String sendContent = "你好,我是消息"+num;
Message message = new Message("topic1","tag1",sendContent.getBytes("utf-8"));
SendResult send = producer.send(message);
System.out.printf("第"+num+"条消息:%s%n", send);
}
producer.shutdown();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MQClientException e) {
e.printStackTrace();
} catch (MQBrokerException e) {
e.printStackTrace();
} catch (RemotingException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} catch (MQBrokerException e) {
e.printStackTrace();
} catch (RemotingException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
|