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 和重試策略,這些對系統性能有顯著影響。