全面的 Spring Boot 整合 RabbitMQ 的 `application.yml` 配置示例
spring:rabbitmq:# ===== 基础连接配置 =====host: localhost # RabbitMQ 服务器地址port: 5672 # 默认端口username: guest # 默认用户名password: guest # 默认密码virtual-host: / # 虚拟主机(默认/)# ===== 连接池配置 =====connection-timeout: 5s # 连接超时时间cache:connection:mode: CHANNEL # 连接缓存模式: CHANNEL(默认)/CONNECTIONsize: 25 # 缓存连接数# ===== SSL/TLS 安全配置 =====ssl:enabled: false # 启用 SSLalgorithm: TLSv1.2 # SSL 算法key-store: /path/to/keystore.jkskey-store-password: secrettrust-store: /path/to/truststore.jkstrust-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/simplesimple:concurrency: 5 # 最小消费者线程数max-concurrency: 10 # 最大消费者线程数prefetch: 50 # 每次预取消息数量auto-startup: true # 是否自动启动监听器acknowledge-mode: auto # 确认模式: auto(自动)/manual(手动)/none(无)retry:enabled: true # 启用消费重试max-attempts: 3 # 最大重试次数initial-interval: 1000msmultiplier: 2.0max-interval: 10000msdefault-requeue-rejected: false # 拒绝消息时不重新入队# ===== 高级配置 =====connection-factory:requested-heartbeat: 60s # 心跳超时时间connection-timeout: 5s # 连接建立超时publisher-confirm-type: correlated # 发布者确认模式: none/correlated/simplepublisher-returns: true # 启用发布者返回模式# ===== 自定义交换机/队列/绑定配置 =====direct-exchange: my-direct-exchangequeue: my-queuerouting-key: my.routing.key# ===== 死信队列配置 =====dead-letter-exchange: dlx.exchangedead-letter-routing-key: dlx.routing.key# ===== 自定义属性扩展 =====
custom:rabbit:queue:order-queue:name: orders.queuedurable: trueexclusive: falseauto-delete: falsenotification-queue:name: notifications.queuedurable: truettl: 60000 # 消息存活时间(ms)exchange:orders-exchange:name: orders.exchangetype: topicdurable: 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 和重试策略,这些对系统性能有显著影响。