✨ 惰性队列说明;
This commit is contained in:
parent
51172bd142
commit
fed632f16e
|
@ -796,3 +796,56 @@ sequenceDiagram
|
||||||
|
|
||||||
## 惰性队列
|
## 惰性队列
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
>
|
||||||
|
> 1. **性能权衡**:惰性队列的吞吐量可能低于普通队列(尤其是内存队列)
|
||||||
|
> 2. **磁盘I/O压力**:会增加磁盘I/O操作,需要考虑磁盘性能
|
||||||
|
> 3. **不适合低延迟场景**:由于涉及磁盘操作,不适合对延迟极其敏感的场景
|
||||||
|
|
||||||
|
- 在创建队列时,在`Durability:`可以有两种选择:
|
||||||
|
- Durable:持久化队列,消息持久化到硬盘上。
|
||||||
|
- Transient:临时队列,不做持久化操作,broker重启后消息会丢失。
|
||||||
|
|
||||||
|
### 惰性队列的核心特点
|
||||||
|
|
||||||
|
1. **消息直接写入磁盘**:不像普通队列先将消息存入内存再刷盘
|
||||||
|
2. **按需加载到内存**:只有在消费者需要时才将消息加载到内存
|
||||||
|
3. **减少内存占用**:特别适合处理大量消息且消费速度较慢的场景
|
||||||
|
|
||||||
|
### 主要应用场景
|
||||||
|
|
||||||
|
#### 1. 大流量消息积压场景
|
||||||
|
|
||||||
|
- 当生产者速度远高于消费者速度时
|
||||||
|
- 传统队列可能导致内存溢出,而惰性队列能有效控制内存使用
|
||||||
|
|
||||||
|
#### 2. 长时间消息堆积
|
||||||
|
|
||||||
|
- 需要长时间存储大量消息(如日志、审计数据)
|
||||||
|
- 消息可能需要在队列中保留数小时甚至数天
|
||||||
|
|
||||||
|
#### 3. 高可用性要求场景
|
||||||
|
|
||||||
|
- 减少节点故障时的消息丢失风险(因为消息已持久化到磁盘)
|
||||||
|
- 配合镜像队列使用可提高系统可靠性
|
||||||
|
|
||||||
|
#### 4. 内存敏感环境
|
||||||
|
|
||||||
|
- 在内存资源有限的服务器上
|
||||||
|
- 需要处理大量消息但无法提供足够内存的情况
|
||||||
|
|
||||||
|
#### 5. 突发流量处理
|
||||||
|
|
||||||
|
- 能够吸收突发的大量消息而不影响系统稳定性
|
||||||
|
- 为消费者处理高峰流量提供缓冲时间
|
||||||
|
|
||||||
|
### 配置方式
|
||||||
|
|
||||||
|
可以通过以下方式声明惰性队列:
|
||||||
|
|
||||||
|
```java
|
||||||
|
// Java客户端示例
|
||||||
|
Map<String, Object> args = new HashMap<>();
|
||||||
|
args.put("x-queue-mode", "lazy");
|
||||||
|
channel.queueDeclare("myLazyQueue", true, false, false, args);
|
||||||
|
```
|
|
@ -343,7 +343,7 @@ public void processMessage(String dataString, Message message, Channel channel)
|
||||||
<h2 class="text-center fw-bold mb-5">RabbitMQ架构概览</h2>
|
<h2 class="text-center fw-bold mb-5">RabbitMQ架构概览</h2>
|
||||||
<div class="diagram-container">
|
<div class="diagram-container">
|
||||||
<img alt="RabbitMQ架构图" class="img-fluid rounded"
|
<img alt="RabbitMQ架构图" class="img-fluid rounded"
|
||||||
src="https://www.rabbitmq.com/img/tutorials/intro/hello-world-example-routing.png">
|
src="https://www.rabbitmq.com/img/rabbitmq-logo-with-name.svg">
|
||||||
<div class="row mt-4">
|
<div class="row mt-4">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<div class="text-center p-3">
|
<div class="text-center p-3">
|
||||||
|
|
Loading…
Reference in New Issue