使用Docker搭建RabbitMQ环境
本次环境搭建使用的Docker,因为是学习嘛,Docker是在是太香了
注意了啊:咱这里要用managemen版本,千万别使用last版本的,management版本的才有管理界面
1、首先查询镜像
| 1
 | docker search rabbitmq:management
 | 
2、获取镜像
| 1
 | docker pull rabbitmq:management
 | 
3、运行镜像(已经映射好端口了)
| 1
 | docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
 | 
访问地址
访问管理界面的地址就是 http://{自己的ip}:15672,可以使用默认的账户登录,用户名和密码都guest。

补充小知识:如果想创建额外的账户,可以从这个管理界面创建,这个咱就不说了,下面列出在docker环境中添加新的RabbitMQ用户。
| 12
 3
 4
 5
 
 | rabbitmqctl list_users #查看用户rabbitmqctl add_user 用户名 密码 #添加用户
 set_user_tags 用户名 administrator #设置用户角色
 rabbitmqctl set_permissions -p "/" 用户名 ".*" ".*" ".*" #设置用户权限
 rabbitmqctl [--node <node>] [--longnames] [--quiet] set_permissions [--vhost <vhost>] <username> <conf> <write> <read> #给用户设置权限
 
 | 
RabbitMQ首战
1、首先咱创建一个maven工程
导入相应的依赖
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | <dependencies><dependency>
 <groupId>com.rabbitmq</groupId>
 <artifactId>amqp-client</artifactId>
 <version>5.8.0</version>
 </dependency>
 
 <dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.6</version>
 </dependency>
 </dependencies>
 
 | 
来看一下RabbitMQ的简单模型

当然这只是一个相对简单的模型,RabbitMQ这一层里面还有相当多的东西
从图中我们不难看出我们首先得有一个消息的生产者
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 
 | package com.bestrookie.rabbitmq.product;import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.Connection;
 import com.rabbitmq.client.ConnectionFactory;
 public class Producer {
 public static final String QUENUE_NAME = "hello";
 public static void main(String[] args) throws Exception {
 ConnectionFactory factory = new ConnectionFactory();
 factory.setHost("192.168.211.100");
 factory.setUsername("rookie");
 factory.setPassword("123456");
 Connection connection = factory.newConnection();
 Channel channel = connection.createChannel();
 
 
 
 
 
 
 
 
 channel.queueDeclare(QUENUE_NAME,false,false,false,null);
 String msg = "hello world";
 
 
 
 
 
 
 
 
 channel.basicPublish("",QUENUE_NAME,null,msg.getBytes());
 System.out.println("消息发送成功=====");
 
 }
 }
 
 | 

还得有一个消费者
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 | package com.bestrookie.rabbitmq.product;import com.rabbitmq.client.*;
 public class Consumer {
 public static final String QUEUE_NAME = "hello";
 public static void main(String[] args) throws Exception{
 ConnectionFactory factory = new ConnectionFactory();
 factory.setHost("192.168.211.100");
 factory.setUsername("rookie");
 factory.setPassword("123456");
 Connection connection = factory.newConnection();
 Channel channel = connection.createChannel();
 
 DeliverCallback deliverCallback = (consumerTag,message)->{
 System.out.println("未成功消费回调->" +
 new String(message.getBody()));
 };
 CancelCallback cancelCallback = (consumerTag)->{
 System.out.println("消费被取消");
 };
 
 
 
 
 
 
 
 channel.basicConsume(QUEUE_NAME,deliverCallback,cancelCallback);
 }
 }
 
 | 

如果生产者再发送一条新的参数,这里会自动接收这条新的消息。
这就是一个简单hello world。