rabbitmq安装学习

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

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

 

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

 

3.安装rabbitmq

安装完后点击:

 

 

 

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

 

 

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 

*/

public class Receive {

 public static void 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()));

     }

}

}

posted @ 2016-11-21 11:27  IT一族  阅读(120)  评论(0)    收藏  举报