官方的简单架构图
Publisher - 生产者:发布消息到RabbitMQ中的Exchange
Consumer - 消费者:监听RabbitMQ中的Queue中的消息
Exchange - 交换机:和生产者建立连接并接收生产者的消息
Queue - 队列:Exchange会将消息分发到指定的Queue,Queue和消费者进行交互
Routes - 路由:交换机以什么样的策略将消息发布到Queue
简单架构图,巧记,pe,r,qc |
---|
一句话总结:生产者消息发布交给交换机,交换机把消息路由给队列,队列被消费者监听到有消息,消息被消费掉↑
完整架构图,下面的/test是假设等会要新建的虚拟主机的名字,默认的虚拟主机Virtual Host名字叫/
完整架构图,巧记pe,r,qc,ccc,vm |
---|
生产者和消费者都要先和虚拟主机Virtual Host建立连接,然后分别跟交换机和队列通过管道Channel来传输数据↑
Ready:待消费的消息总数
Unacked:待应答(待确认)的消息总数
Total:总数 Ready+Unacked
RabbitMQ的使用【重点
】
RabbitMQ的7种通讯方式↓
通讯方式 |
---|
Java连接RabbitMQ
导入依赖
仓库https://mvnrepository.com/搜索amqp-client来下载java客户端依赖,版本一般找最多人用的即可↓
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
创建工具类连接RabbitMQ,连接工厂指定参数,新建连接来得到
public class RabbitMQClient {
public static Connection getConnection(){
// 创建Connection工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.200.129");//这里要注意换成你自己虚拟机的ip,因为mq装在虚拟机上
factory.setPort(5672);//注意图形化界面端口才是15672
factory.setUsername("test");
factory.setPassword("test");
factory.setVirtualHost("/test");
// 创建Connection
Connection conn = null;
try {
conn = factory.newConnection();
} catch (Exception e) {
e.printStackTrace();
}
// 返回Connection
return conn;
}
}
测试连接
public class TestConnection {
@Test
public void test1(){
Connection connection = RabbitMQClient.getConnection();
System.out.println(connection);//amqp://test@192.168.200.129:5672//test
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
通讯方式
1、Hello-World
一个生产者,一个默认的交换机,一个队列,一个消费者
结构图 |
---|