搜索下载
搜索rabbitmq官网进入下载页:http://www.rabbitmq.com/download.html,如图: 

 

springboot rabbitMQ 心跳处理_管理控制

springboot rabbitMQ 心跳处理_管理控制_02

 

安装
下载完成后直接点击安装,此时会检测系统是否已经安装其必要的插件,如果弹框说明没有安装(安装了不会弹框),直接点击“是”,进入下载页面 http://www.erlang.org/downloads,如图:

springboot rabbitMQ 心跳处理_环境变量_03

 

下载完成后直接点击安装、选择路径(一路next,保持默认)。
安装完成后检查环境变量是否自动添加(变量名为ERLANG_HOME),如果没有,则添加:
此电脑-->鼠标右键“属性”-->高级系统设置-->环境变量-->“新建”系统环境变量,如下图:

 

springboot rabbitMQ 心跳处理_管理控制_04

 

然后双击系统变量path,点击“新建”,将%ERLANG_HOME%\bin加入到path中
校验是否安装配置成功:
windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了,如图:

springboot rabbitMQ 心跳处理_管理控制_05

 

此时继续安装下载的rabbitmq-server-3.7.9.exe,选择安装路径,一路next即可。
配置
1、激活 RabbitMQ's Management Plugin(必须)
进入rabbitmq_server下的sbin目录,运行控制台,如:

springboot rabbitMQ 心跳处理_重启_06

 

运行命令:rabbitmq-plugins.bat enable rabbitmq_management

springboot rabbitMQ 心跳处理_环境变量_07

 

注意:输入rabbitmq-plugins enable rabbitmq_management,导致无法安装
2、修改端口号和心跳时间(选择)
到安装路径下的etc文件夹下,将rabbitmq.config.example备份一份,并修改为config类型的文件,即为rabbitmq.config。
打开rabbitmq.config,找到tcp_listeners,去掉其前面的注释%%,然后将后面的整数值5672改为你想要的端口号,如:
                            {tcp_listeners, [15672]},
找到heartbeat,去掉注释%%和大括号后面的逗号,将心跳时间改为你想要的值,如:                                                  {heartbeat, 80}
在系统环境变量中新增变量名"RABBITMQ_CONFIG_FILE",值为刚配置的rabbitmq.config文件的路径地址(去掉后缀),如图:

springboot rabbitMQ 心跳处理_管理控制_08

 

特别说明:
rabbitmq.config文件中如果后面有要打开的其他配置,则该项后面的逗号不要去掉,否则就要去掉(不然会有语法错误),如:
只开启配置端口 :
                          {tcp_listeners, [15672]}  (因为后面没有要配置的,已经是最后一项,所以去掉逗号)

既开启端口配置,也开启心跳配置:
                            {tcp_listeners, [15672]},(因为后面有要配置的其他项,所以逗号保留)

                            {heartbeat, 80}

3、服务停止、更新、启动
修改配置文件后,不能只重启服务,而需要重新安装、更新、重启服务,如:
注意:运行要用管理员权限,否则无法启动,如图所示:
以管理员身份打开cmd控制台,并进入sbin目录,执行以下三步操作

springboot rabbitMQ 心跳处理_环境变量_09

 

也可以直接在开始菜单里点击启动,如图:

 

springboot rabbitMQ 心跳处理_管理控制_10

 

其他启动方式或错误说明
进入sbin目录,双击rabbitmq-server.bat 或者 直接打开控制台运行 net stop RabbitMQ(关闭) net start RabbitMQ(启动)运行
启动出错

springboot rabbitMQ 心跳处理_环境变量_11

 

说明端口被占用,修改默认端口

springboot rabbitMQ 心跳处理_环境变量_12

 

5代表:不是系统管理员权限
 

访问测试
 http://localhost:15672 默认账号密码:guest/guest

4.添加用户
4.1.添加admin用户

springboot rabbitMQ 心跳处理_重启_13

 

4.2.用户角色
1、超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2、监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3、策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
4、普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
5、其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

4.3.创建Virtual Hosts

springboot rabbitMQ 心跳处理_环境变量_14

 

选中Admin用户,设置权限:

springboot rabbitMQ 心跳处理_管理控制_15


看到权限已加:

springboot rabbitMQ 心跳处理_重启_16

4.4.管理界面中的功能

springboot rabbitMQ 心跳处理_管理控制_17

springboot rabbitMQ 心跳处理_管理控制_18

5.学习五种队列

 

springboot rabbitMQ 心跳处理_重启_19

5.2.简单队列

5.2.1.图示

springboot rabbitMQ 心跳处理_重启_20

P:消息的生产者
C:消息的消费者
红色:队列

生产者将消息发送到队列,消费者从队列中获取消息。
5.2.2.导入RabbitMQ的客户端依赖

<dependency>
   <groupId>com.rabbitmq</groupId>
   <artifactId>amqp-client</artifactId>
   <version>3.4.1</version>
</dependency>

 5.2.3.获取MQ的连接

package com.zpc.rabbitmq.util;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;public class ConnectionUtil {
    public static Connection getConnection() throws Exception {
        //定义连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("localhost");
        //端口
        factory.setPort(5672);
        //设置账号信息,用户名、密码、vhost
        factory.setVirtualHost("testhost");
        factory.setUsername("admin");
        factory.setPassword("admin");
        // 通过工程获取连接
        Connection connection = factory.newConnection();
        return connection;
    }
}5.2.4.生产者发送消息到队列
package com.zpc.rabbitmq.simple;
import com.zpc.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;public class Send {
    private final static String QUEUE_NAME = "q_test_01";
    public static void main(String[] argv) throws Exception {
        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        // 从连接中创建通道
        Channel channel = connection.createChannel();        // 声明(创建)队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        // 消息内容
        String message = "Hello World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");
        //关闭通道和连接
        channel.close();
        connection.close();
    }


}

5.2.5.管理工具中查看消息

springboot rabbitMQ 心跳处理_环境变量_21

点击上面的队列名称,查询具体的队列中的信息:

springboot rabbitMQ 心跳处理_环境变量_22


5.2.6.消费者从队列中获取消息

package com.zpc.rabbitmq.simple;
import com.zpc.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.QueueingConsumer;public class Recv {
    private final static String QUEUE_NAME = "q_test_01";
    public static void main(String[] argv) throws Exception {
        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        // 从连接中创建通道
        Channel channel = connection.createChannel();
        // 声明队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);        // 定义队列的消费者
        QueueingConsumer consumer = new QueueingConsumer(channel);        // 监听队列
        channel.basicConsume(QUEUE_NAME, true, consumer);        // 获取消息
        while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received '" + message + "'");
        }
    }


}