安装
1.拉取镜像
2.启动容器
3.开放linux端口及管理程序
开放管理程序
4.浏览器访问
浏览器访问: http://ip:15673/#/
输入用户名/密码: guest/guet
Springboot集成
1.导入依赖
<!-- rabbitmq 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.配置文件
spring:
# 配置RabbitMQ
rabbitmq:
host: ip
port: 5674
username: guest
password: guest
# 虚拟主机
virtual-host: my_vhost
核心概念
生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定
队列
队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。这就是我们使用队列的方式
消费者
消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序。请注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者。
RabbitMQ的六种工作模式
-
简单队列模式(Simple Queue): 这是最基本的模式,也称为点对点模式。消息从生产者发送到队列,然后由消费者从队列中接收和处理。每条消息只有一个消费者能够接收,确保消息的顺序处理。
-
工作队列模式(Work Queue): 也称为任务队列模式。多个消费者共享一个队列来处理消息。每条消息只有一个消费者可以接收,但是消息可以被多个消费者中的一个处理,确保任务的分发和负载均衡。
-
发布/订阅模式(Publish/Subscribe): 在这种模式中,消息被发送到一个交换机(exchange),而不是直接发送到队列。交换机将消息广播到所有与之绑定的队列。这种模式适用于需要广播消息给多个消费者的场景。
-
路由模式(Routing): 这种模式在发布/订阅模式的基础上增加了消息的过滤。消息发送到交换机时,可以指定一个或多个路由键(routing key),交换机根据路由键将消息路由到绑定了匹配路由键的队列。
-
主题模式(Topics): 这是路由模式的扩展,允许使用通配符匹配路由键。发送者可以使用模糊匹配的路由键来发送消息,而接收者可以使用通配符匹配来接收特定类型的消息。
-
RPC模式(Remote Procedure Call): 这种模式允许客户端调用远程服务器上的一个或一组方法,并等待响应。RPC 使用一个请求-响应的模式,客户端发送请求消息,服务器接收并处理请求后发送响应消息给客户端。
RabbitMQ的核心组件
-
Broker(代理): RabbitMQ 代理是消息代理的核心组件,负责接收、存储和路由消息。它实现了 AMQP(高级消息队列协议)的标准,并提供了消息传递的基本功能。
-
Exchange(交换机): 交换机是消息的接收和路由中心。生产者发送消息到交换机,交换机根据路由规则将消息路由到一个或多个队列中。RabbitMQ 提供了不同类型的交换机,如直连交换机、主题交换机、扇出交换机等,以满足不同的消息路由需求。
-
Queue(队列): 队列是消息的缓冲区,用于存储待处理的消息。消费者从队列中接收消息并进行处理。队列可以配置不同的属性,如持久性、消息过期时间、最大长度等。
-
Binding(绑定): 绑定定义了交换机如何将消息路由到队列。它将交换机和队列之间建立了关联,并指定了消息的路由规则。通常情况下,绑定由交换机的类型和绑定键(binding key)决定。
-
Connection(连接): 连接是生产者和消费者与 RabbitMQ 代理之间的通信通道。每个连接都有一个唯一的通道(Channel),通过通道可以进行消息的发送和接收操作。连接可以通过 AMQP 协议进行安全的认证和授权。
-
Virtual Host(虚拟主机): 虚拟主机是逻辑上的消息代理,用于实现不同的消息处理环境的隔离。每个虚拟主机都有独立的交换机、队列和权限设置,可以为不同的应用程序或服务提供独立的消息处理环境。
以上概念均来自chatgpt,具体模式请查看博客中的其他文章