使用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用户。
1 2 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工程
导入相应的依赖
1 2 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这一层里面还有相当多的东西
从图中我们不难看出我们首先得有一个消息的生产者
1 2 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("消息发送成功=====");
} }
|

还得有一个消费者
1 2 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。