最近生產RabbitMQ出了幾次問題,所以抽時間整理了一份關於Spring Boot 整合RabbitMQ環境下的配置參數解釋,通過官網文檔和網上其他朋友一些文章參考歸納整理而得,有錯誤之處還請指正~
★RabbitMQ
★Version: 1.5.13.RELEASE
★屬性文件:org.springframework.boot.autoconfigure.amqp.RabbitProperties
★Config:
# base
spring.rabbitmq.host: 服務Host
spring.rabbitmq.port: 服務端口
spring.rabbitmq.username: 登陸用戶名
spring.rabbitmq.password: 登陸密碼
spring.rabbitmq.virtual-host: 連接到rabbitMQ的vhost
spring.rabbitmq.addresses: 指定client連接到的server的地址,多個以逗號分隔(優先取addresses,然后再取host)
spring.rabbitmq.requested-heartbeat: 指定心跳超時,單位秒,0為不指定;默認60s
spring.rabbitmq.publisher-confirms: 是否啟用【發布確認】
spring.rabbitmq.publisher-returns: 是否啟用【發布返回】
spring.rabbitmq.connection-timeout: 連接超時,單位毫秒,0表示無窮大,不超時
spring.rabbitmq.parsed-addresses:
# ssl
spring.rabbitmq.ssl.enabled: 是否支持ssl
spring.rabbitmq.ssl.key-store: 指定持有SSL certificate的key store的路徑
spring.rabbitmq.ssl.key-store-password: 指定訪問key store的密碼
spring.rabbitmq.ssl.trust-store: 指定持有SSL certificates的Trust store
spring.rabbitmq.ssl.trust-store-password: 指定訪問trust store的密碼
spring.rabbitmq.ssl.algorithm: ssl使用的算法,例如,TLSv1.1
# cache
spring.rabbitmq.cache.channel.size: 緩存中保持的channel數量
spring.rabbitmq.cache.channel.checkout-timeout: 當緩存數量被設置時,從緩存中獲取一個channel的超時時間,單位毫秒;如果為0,則總是創建一個新channel
spring.rabbitmq.cache.connection.size: 緩存的連接數,只有是CONNECTION模式時生效
spring.rabbitmq.cache.connection.mode: 連接工廠緩存模式:CHANNEL 和 CONNECTION
# listener
spring.rabbitmq.listener.simple.auto-startup: 是否啟動時自動啟動容器
spring.rabbitmq.listener.simple.acknowledge-mode: 表示消息確認方式,其有三種配置方式,分別是none、manual和auto;默認auto
spring.rabbitmq.listener.simple.concurrency: 最小的消費者數量
spring.rabbitmq.listener.simple.max-concurrency: 最大的消費者數量
spring.rabbitmq.listener.simple.prefetch: 指定一個請求能處理多少個消息,如果有事務的話,必須大於等於transaction數量.
spring.rabbitmq.listener.simple.transaction-size: 指定一個事務處理的消息數量,最好是小於等於prefetch的數量.
spring.rabbitmq.listener.simple.default-requeue-rejected: 決定被拒絕的消息是否重新入隊;默認是true(與參數acknowledge-mode有關系)
spring.rabbitmq.listener.simple.idle-event-interval: 多少長時間發布空閑容器時間,單位毫秒
spring.rabbitmq.listener.simple.retry.enabled: 監聽重試是否可用
spring.rabbitmq.listener.simple.retry.max-attempts: 最大重試次數
spring.rabbitmq.listener.simple.retry.initial-interval: 第一次和第二次嘗試發布或傳遞消息之間的間隔
spring.rabbitmq.listener.simple.retry.multiplier: 應用於上一重試間隔的乘數
spring.rabbitmq.listener.simple.retry.max-interval: 最大重試時間間隔
spring.rabbitmq.listener.simple.retry.stateless: 重試是有狀態or無狀態
# template
spring.rabbitmq.template.mandatory: 啟用強制信息;默認false
spring.rabbitmq.template.receive-timeout: receive() 操作的超時時間
spring.rabbitmq.template.reply-timeout: sendAndReceive() 操作的超時時間
spring.rabbitmq.template.retry.enabled: 發送重試是否可用
spring.rabbitmq.template.retry.max-attempts: 最大重試次數
spring.rabbitmq.template.retry.initial-interval: 第一次和第二次嘗試發布或傳遞消息之間的間隔
spring.rabbitmq.template.retry.multiplier: 應用於上一重試間隔的乘數
spring.rabbitmq.template.retry.max-interval: 最大重試時間間隔
參考文檔:
Spring Cloud中RabbitMQ配置屬性表: https://blog.csdn.net/en_joker/article/details/80103519
SpringBoot的RabbitMQ消息隊列: 第二模式"Work queues" https://blog.csdn.net/lxhjh/article/details/69054342
SpringBoot官方文檔:https://docs.spring.io/spring-amqp/docs/1.5.6.RELEASE/reference/html/_reference.html
SpringBoot系統- 死信隊列: https://www.cnblogs.com/bigdataZJ/p/springboot-deadletter-queue.html