1.安装前准备:
安装maven 并配置maven环境变量
a.方便管理 在 /home 目录下创建 maven 文件夹 命令: mkdir maven
b.cd /home/maven 目录 在该目录下 获取maven tar.gz 文件包
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
c.解压文件包:tar -xf apache-maven-3.3.9-bin.tar.gz 解压出文件夹 apache-maven-3.3.9
d.修改环境变量,在/etc/profile 文件中添加以下几行maven 环境变量信息
vim profile 编辑profile文件
键入 i 进入编辑模式,在文件最后添加:
MAVEN_HOME=/home/maven/maven3/apache-maven-3.3.9
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
追加完成后,键入命令 :wq 保存并退出
e.执行命令 source /etc/profile
使环境变量生效。
source /etc/profile
f.最后运行 mvn -v
验证maven是否安装成功,如果安装成功会打印如下内容
Apache Maven 3.3.9 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00)
Maven home: /usr/local/maven3
Java version: 1.7.0_65, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-35-generic", arch: "amd64", family: "unix"
如果 安装了 jdk 但是没有配置环境变量 会在上述信息中 有个 Warning: JAVA_HOME environment variable is not set. 提示,但无关紧要。
2.安装RMQ
a.方便管理 在 /home 目录下创建一个 RocketMQ 文件夹 mkdir rocketMq
b. 进入 rocketMq 文件夹 cd /rocketMq 在此文件夹下 获取 RMQ 的安装包 我用的是 wget 方式:
wget https://codeload.github.com/alibaba/RocketMQ/tar.gz/v3.5.8
c. 下载完成后解压 : tar -xf v3.5.8 获得一个文件夹:RocketMQ-3.5.8
d.进入 RocketMQ-3.5.8 文件夹 : cd RocketMQ-3.5.8
e.执行安装命令 :sh install.sh 在操作此步骤时,会耗时很久。install 脚本会执行mav 命令下载需要的jar包。
3.启动RMQ
进入bin目录
运行 nohup mqnamesrv -n 192.168.27.68:9876 &↙ 启动nameserver服务。
运行 nohup mqbroker -n 192.168.27.68:9876↙ 启动broker服务
其中,172.16.192.186为我服务器的IP。
至此,准备安装 RocketMq 的工作完成。下面进行 代码测试 。创建一maven 项目,用maven 主要是方便 jar包的管理,可以让maven去下载, 并创建 测试类如下:
4.测试类:
创建生产者和消费者,然后生产者生产消息,消费者消费消息。具体代码如下。
新建一个Java类,如下代码
Java
public class Consumer {
public static void main(String[] args) throws InterruptedException, MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(
"rmq-group");
consumer.setNamesrvAddr("172.16.192.186:9876");
consumer.setInstanceName("rmq-instance");
consumer.subscribe("TopicA-test", "TagA");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(
List 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.");
}
}
创建一个java类,如下:
Java
public class Producer {
public static void main(String[] args) throws MQClientException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("rmq-group");
producer.setNamesrvAddr("172.16.192.186:9876");
producer.setInstanceName("rmq-instance");
producer.start();
try {
for (int i = 0; i < 3; i++) {
Message msg = new Message("TopicA-test",// topic
"TagA",// tag
(new Date() + "Hello RocketMQ ,QuickStart" + i)
.getBytes()// body
);
SendResult sendResult = producer.send(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
producer.shutdown();
}
}
运行Consumer和Producer,就可以看到生产者推送了消息,很快生产者就接收到了消息。