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
*/
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()));
}
}
}
|