spring:
rabbitmq:
# ===== 基础连接配置 =====
host: localhost # RabbitMQ 服务器地址
port: 5672 # 默认端口
username: guest # 默认用户名
password: guest # 默认密码
virtual-host: / # 虚拟主机(默认/)
# ===== 连接池配置 =====
connection-timeout: 5s # 连接超时时间
cache:
connection:
mode: CHANNEL # 连接缓存模式: CHANNEL(默认)/CONNECTION
size: 25 # 缓存连接数
# ===== SSL/TLS 安全配置 =====
ssl:
enabled: false # 启用 SSL
algorithm: TLSv1.2 # SSL 算法
key-store: /path/to/keystore.jks
key-store-password: secret
trust-store: /path/to/truststore.jks
trust-store-password: secret
# ===== 生产者配置 =====
template:
retry:
enabled: true # 启用发送重试
max-attempts: 3 # 最大重试次数
initial-interval: 1000ms # 初始重试间隔
multiplier: 2.0 # 重试间隔倍数
mandatory: true # 强制消息路由(触发ReturnCallback)
receive-timeout: 5000ms # 接收超时时间(用于接收操作)
# ===== 消费者配置 =====
listener:
type: direct # 监听器类型: direct/simple
simple:
concurrency: 5 # 最小消费者线程数
max-concurrency: 10 # 最大消费者线程数
prefetch: 50 # 每次预取消息数量
auto-startup: true # 是否自动启动监听器
acknowledge-mode: auto # 确认模式: auto(自动)/manual(手动)/none(无)
retry:
enabled: true # 启用消费重试
max-attempts: 3 # 最大重试次数
initial-interval: 1000ms
multiplier: 2.0
max-interval: 10000ms
default-requeue-rejected: false # 拒绝消息时不重新入队
# ===== 高级配置 =====
connection-factory:
requested-heartbeat: 60s # 心跳超时时间
connection-timeout: 5s # 连接建立超时
publisher-confirm-type: correlated # 发布者确认模式: none/correlated/simple
publisher-returns: true # 启用发布者返回模式
# ===== 自定义交换机/队列/绑定配置 =====
direct-exchange: my-direct-exchange
queue: my-queue
routing-key: my.routing.key
# ===== 死信队列配置 =====
dead-letter-exchange: dlx.exchange
dead-letter-routing-key: dlx.routing.key
# ===== 自定义属性扩展 =====
custom:
rabbit:
queue:
order-queue:
name: orders.queue
durable: true
exclusive: false
auto-delete: false
notification-queue:
name: notifications.queue
durable: true
ttl: 60000 # 消息存活时间(ms)
exchange:
orders-exchange:
name: orders.exchange
type: topic
durable: true
主要配置项说明:
连接配置
host
/port
: RabbitMQ 服务器地址username
/password
: 认证信息virtual-host
: 虚拟主机隔离环境connection-timeout
: 连接超时时间
生产者配置
template.retry
: 消息发送失败的重试策略publisher-confirm-type
: 消息确认机制publisher-returns
: 路由失败消息回调
消费者配置
listener.simple.concurrency
: 消费者并发设置prefetch
: 控制流量(QoS)acknowledge-mode
: 消息确认方式retry
: 消费失败的重试策略
高级配置
cache.connection
: 连接池配置ssl
: 安全连接配置dead-letter-exchange
: 死信队列设置
自定义队列/交换机
- 可通过自定义属性定义多个队列/交换机
- 支持 TTL、持久化等参数配置
重要注意事项:
确认模式选择:
auto
: Spring 自动确认(默认)manual
: 需手动调用basicAck
none
: 无确认(不推荐)
死信队列配置:
java代码
@Bean public Queue orderQueue() { return QueueBuilder.durable(orderQueueName) .deadLetterExchange("dlx.exchange") .deadLetterRoutingKey("dlx.routing.key") .build(); }
消息转换器:
推荐使用 JSON 序列化:java代码
@Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) { RabbitTemplate template = new RabbitTemplate(connectionFactory); template.setMessageConverter(jsonMessageConverter()); return template; }
消费者并发控制:
yaml代码
listener: simple: concurrency: 3 # 初始消费者数量 max-concurrency: 10 # 最大消费者数量
生产环境建议:
- 启用 TLS 加密通信
- 使用连接池 (
cache.connection.size
) - 配置合理的重试策略
- 启用消息确认机制
- 设置死信队列处理失败消息
根据实际业务需求调整配置参数,特别是并发数、prefetch count 和重试策略,这些对系统性能有显著影响。