打开 VMware 虚拟机,配置虚拟网络
更改子网的IP
安装虚拟机打开VMware虚拟机,将 centos-8 添加到VMware虚拟机中,点击下面文件
添加成功
打开 centos-8虚拟机,检查网络
关闭虚拟机,并克隆 centos-8 或 centos-7: docker-base,改名为docker-base
使用MobaXterm_Personal工具链接虚拟机系统,运行终端
安装 Docker参考【Docker技术实践】01-Docker入门
终端输入docker指令查看是否安装成功
搭建Rabbitmq服务器将 docker-base (安装了docker环境)克隆一份起名为 rabbitmq ,并运行虚拟机。
设置ip进入rabbitmq 虚拟机后依次执行下面指令,更改并检查ip信息
./ip-static ip: 192.168.64.140 ifconfig
使用MobaXterm_Personal工具链接虚拟机系统,运行终端
方式一:Linux上网络下载
镜像中已经安装了管理界面。
docker pull rabbitmq:management
方式二: 本地拉取
从 code 下载 rabbit-image.gz,上传到服务器,然后执行镜像导入 。
- 上传离线安装包
- 安装
docker load -i rabbit-image.gzDocker 启动 RabbitMQ 容器
安装完成后依次执行下面命令
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 重启 docker 系统服务
systemctl restart docker
创建rabbitmq文件夹,在rabbitmq文件夹下创建 rabbitmq.conf 文件,编写配置
mkdir /etc/rabbitmq vim /etc/rabbitmq/rabbitmq.conf # 添加两行配置: default_user = admin default_pass = admin
启动 rabbitmq 容器
docker run -d --name rabbit -p 5672:5672 -p 15672:15672 -v /etc/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -e RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf rabbitmq:management访问 RabbitMQ 管理控制台
启动 rabbitmq 容器后,访问管理控制台
http://192.168.64.140:15672
用户名密码是 admin
RabbitMQ 消息队列服务界面
打开Idea,新建empty project 工程,命名为rabbitmq
在 rabbitmq 工程中添加 Maven 模块,命名为rabitmq-api,添加com.rabbitmq-amqp-client 依赖。
4.0.0 cn.tedu rabbitmq-api 1.0-SNAPSHOT 8 8 com.rabbitmq amqp-client 5.4.3
并在java包下创建m1包,创建Producer类实现消息的发送,Consumer类实现消息的接收。
业务代码Producer类 生产者发送消息
package m1;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Producer {
public static void main(String[] args) throws IOException, TimeoutException {
//连接RabbitMQ
ConnectionFactory f = new ConnectionFactory();
f.setHost("192.168.64.140"); // wht6.cn
f.setPort(5672);
f.setUsername("admin");
f.setPassword("admin");
Connection con = f.newConnection();
Channel c = con.createChannel();//通信通道
c.queueDeclare("hello-world", false, false, false, null);
c.basicPublish("", "hello-world", null, "Hello world!".getBytes());
System.out.println("消息已发送");
}
}
Consumer类 消费者接收消息
package m1;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Consumer {
public static void main(String[] args) throws IOException, TimeoutException {
// 连接RabbitMQ
ConnectionFactory f = new ConnectionFactory();
f.setHost("192.168.64.140"); // wht6.cn
f.setPort(5672);
f.setUsername("admin");
f.setPassword("admin");
Connection con = f.newConnection();
Channel c = con.createChannel();//通信通道
// 1.创建队列 hello-world,如果队列已经存在,不会重复创建
c.queueDeclare("hello-world", false, false, false, null);
// 3. 创建回调对象
DeliverCallback deliverCallback =
(consumerTag, message) -> {
byte[] a = message.getBody();
String s = new String(a);
System.out.println("收到: " + s);
};
CancelCallback cancelCallback = (consumerTag) ->{ };
c.basicConsume("hello-world", true, deliverCallback, cancelCallback);
}
}
测试 RabbitMQ
启动 Producer 类 发送消息。
查看 RabbitMQ 显示一条消息在队列中。
启动 Consumer 类 接收消息。
查看 RabbitMQ 发现队列中的消息已被取出,队列清空。
工作模式


