1. 下载 rabbitMQ :http://www.rabbitmq.com/download.html,安装rabbitmq需要erlang,下载erlang:http://www.erlang.org/download.html

2.安装erlang到C盘。如图:

 

rabbitmq默认账号密码docker rabbitmq用户名_erlang

安装完后在我的电脑-添加如下图:

 

rabbitmq默认账号密码docker rabbitmq用户名_java_02

3.安装rabbitmq

安装完后点击:

 

rabbitmq默认账号密码docker rabbitmq用户名_java_03

 

 

4.进入后:执行 rabbitmq-plugins enable rabbitmq_management

 

rabbitmq默认账号密码docker rabbitmq用户名_java_04

 

5.重启rabbitmq服务器

 

6.访问http://localhost:15672/#/用户名,密码都为guest

 

7.rabbitmq创建用户及角色

rabbitmq的用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。

查看已有用户及用户的角色:

rabbitmqctl.bat list_users

 

新增一个用户:

rabbitmqctl.bat add_user username password

 

 

 

eric 后面没有“[administrator]”

这个administrator是干嘛用的呢?这就涉及到用户角色问题了:

按照我个人理解,rabbitmq用户角色可分为五类:超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

(1) 超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) 

(3) 策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。

(4) 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5) 其他的

无法登陆管理控制台,通常就是普通的生产者和消费者。

啦,我们也给 eric 变成 “超级管理员” 角色:

rabbitmqctl.bat set_user_tags username administrator

 

再看下结果哈:

 

当然,除了上面的administrator 还有 monitoring、policymaker、management、自定义名称 ,对应上面介绍到的不同的角色。

像我们人一样,我们角色除了是公司的员工,还是父母的孩子、子女的爸妈等,用户也可以同时具有多个角色,设置方式:

rabbitmqctl.bat  set_user_tags  username tag1 tag2 ...

 

(6)查看用户及vhost

c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.2.3\sbin>rabbitmqctl.ba 
  t list_users 
  Listing users ... 
  guest   [administrator] 
  ...done.c:\Program Files (x86)\RabbitMQ  Server\rabbitmq_server-3.2.3\sbin>rabbitmqctl.ba 
  t list_vhosts 
  Listing vhosts ...

 

 

设置用户角色

c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.2.3\sbin>rabbitmqctl.ba
t set_permissions -p /  eric ".*" ".*" ".*"
Setting permissions for user "geffzhang" in vhost "/" ...
...done. 

 

恩,现在总觉得guest 这个不安全(它的默认密码是guest),想更改密码,好办:

rabbitmqctl change_password userName newPassword

 

 

有的人也许会说,我就是看guest不爽,老子新增了administrator用户了,就是想干掉它,可以:

rabbitmqctl.bat delete_user username

 

8.例子:

(1)新建一个发送方法:

 

import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
/**
 * description:
 *<p>
 * @author 
 *<p>
 * create date:2016年11月17日 下午4:39:29
 *</p>
  * @version 1.0 
*/
public class Send {
 public static void main(String[] args) throws IOException, TimeoutException {
    String queueName="hello";
    Connection con=new ConnectionFactory().newConnection();
    Channel channel=con.createChannel();
    channel.queueDeclare(queueName, false, false, false, null);
    channel.basicPublish("", queueName, null,"Hello World 我学rabitmq".getBytes());
}
}

 

(2)新建一个接受方法:

import java.io.IOException;
import java.util.concurrent.TimeoutException;
 
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.ShutdownSignalException;
 
/**
 * description:
 *<p>
 * @author 
 *<p>
 * create date:2016年11月17日 下午4:45:16
 *</p>
  * @version 1.0 
*/
publicclass Receive {
 publicstaticvoid main(String[] args) throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
     String queueName="hello";
     Connection con=new ConnectionFactory().newConnection();
     Channel channel=con.createChannel();
     channel.queueDeclare(queueName, false, false, false, null);
     QueueingConsumer consumer=new QueueingConsumer(channel);
     channel.basicConsume(queueName, true,consumer);
     while(true){
         QueueingConsumer.Delivery deliver=consumer.nextDelivery();
         System.out.println(new String(deliver.getBody()));
     }
}
}