全面的 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

主要配置項說明:

  1. 連接配置

    • host/port: RabbitMQ 服務器地址
    • username/password: 認證信息
    • virtual-host: 虛擬主機隔離環境
    • connection-timeout: 連接超時時間
  2. 生產者配置

    • template.retry: 消息發送失敗的重試策略
    • publisher-confirm-type: 消息確認機制
    • publisher-returns: 路由失敗消息回調
  3. 消費者配置

    • listener.simple.concurrency: 消費者并發設置
    • prefetch: 控制流量(QoS)
    • acknowledge-mode: 消息確認方式
    • retry: 消費失敗的重試策略
  4. 高級配置

    • cache.connection: 連接池配置
    • ssl: 安全連接配置
    • dead-letter-exchange: 死信隊列設置
  5. 自定義隊列/交換機

    • 可通過自定義屬性定義多個隊列/交換機
    • 支持 TTL、持久化等參數配置

重要注意事項:

  1. 確認模式選擇

    • auto: Spring 自動確認(默認)
    • manual: 需手動調用?basicAck
    • none: 無確認(不推薦)
  2. 死信隊列配置

    java代碼

    @Bean
    public Queue orderQueue() {return QueueBuilder.durable(orderQueueName).deadLetterExchange("dlx.exchange").deadLetterRoutingKey("dlx.routing.key").build();
    }
    
  3. 消息轉換器
    推薦使用 JSON 序列化:

    java代碼

    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate template = new RabbitTemplate(connectionFactory);template.setMessageConverter(jsonMessageConverter());return template;
    }
    
  4. 消費者并發控制

    yaml代碼

    listener:simple:concurrency: 3  # 初始消費者數量max-concurrency: 10 # 最大消費者數量
    
  5. 生產環境建議

    • 啟用 TLS 加密通信
    • 使用連接池 (cache.connection.size)
    • 配置合理的重試策略
    • 啟用消息確認機制
    • 設置死信隊列處理失敗消息

根據實際業務需求調整配置參數,特別是并發數、prefetch count 和重試策略,這些對系統性能有顯著影響。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87715.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Win32 API實現串口輔助類

近期需要使用C++進行串口通訊,將Win32 API串口接口進行了下封裝,可實現同步通訊,異步回調通訊 1、SerialportMy.h #pragma once #include <Windows.h> #include <thread> #include <atomic> #include <functional> #include <queue> #inclu…

Python-執行系統命令-subprocess

1 需求 2 接口 3 示例 4 參考資料 Python subprocess 模塊 | 菜鳥教程

Web攻防-XMLXXE上傳解析文件預覽接口服務白盒審計應用功能SRC報告

知識點&#xff1a; 1、WEB攻防-XML&XXE-黑盒功能點挖掘 2、WEB攻防-XML&XXE-白盒函數點挖掘 3、WEB攻防-XML&XXE-SRC報告 一、演示案例-WEB攻防-XML&XXE-黑盒功能點挖掘 1、不安全的圖像讀取-SVG <?xml version"1.0" standalone"yes&qu…

瀏覽器工作原理37 [#] 瀏覽上下文組:如何計算Chrome中渲染進程的個數?

一、前言 在默認情況下&#xff0c;如果打開一個標簽頁&#xff0c;那么瀏覽器會默認為其創建一個渲染進程。 如果從一個標簽頁中打開了另一個新標簽頁&#xff0c;當新標簽頁和當前標簽頁屬于同一站點&#xff08;相同協議、相同根域名&#xff09;的話&#xff0c;那么新標…

位置編碼和RoPE

前言 關于位置編碼和RoPE 應用廣泛&#xff0c;是很多大模型使用的一種位置編碼方式&#xff0c;包括且不限于LLaMA、baichuan、ChatGLM等等 第一部分 transformer原始論文中的標準位置編碼 RNN的結構包含了序列的時序信息&#xff0c;而Transformer卻完全把時序信息給丟掉了…

手動使用 Docker 啟動 MinIO 分布式集群(推薦生產環境)

在生產環境中&#xff0c;MinIO 集群通常部署在多個物理機或虛擬機上&#xff0c;每個節點運行一個 MinIO 容器&#xff0c;并通過 Docker 暴露 API 和 Console 端口。 1. 準備工作 假設有 4 臺服務器&#xff08;也可以是同一臺服務器的不同端口模擬&#xff0c;但不推薦生產…

如何在IntelliJ IDEA中設置數據庫連接全局共享

在現代軟件開發中&#xff0c;數據庫連接管理是開發過程中不可或缺的一部分。為了提高開發效率&#xff0c;減少配置錯誤&#xff0c;并方便管理&#xff0c;IntelliJ IDEA 提供了一個非常有用的功能&#xff1a;數據庫連接全局共享。通過這個功能&#xff0c;你可以在多個項目…

【Python】文件應用: 查找讀取的文件內容

查找讀取的文件內容 from pathlib import Pathpath Path(pi_million_digits.txt) contents path.read_text()lines contents.splitlines() pi_string for line in lines:pi_string line.lstrip()birthday input("Enter your birthday, in the form mmddyy: "…

交互式剖腹產手術模擬系統開發方案

以下是為您設計的《交互式剖腹產手術模擬系統》開發方案框架,包含技術實現路徑與詳細內容結構建議。由于篇幅限制,這里呈現核心框架與關鍵模塊說明: 交互式剖腹產手術模擬系統開發方案 一、項目背景與意義 1.1 傳統醫學教學痛點分析 尸體標本成本高昂(約$2000/例)活體訓…

AWS WebRTC: 判斷viewer端拉流是否穩定的算法

在使用sdk-c viewer端進行拉流的過程中&#xff0c;viewer端拉取的是視頻幀和音頻幀&#xff0c;不會在播放器中播放&#xff0c;所以要根據收到的流來判斷拉流過程是否穩定流暢。 我這邊采用的算法是&#xff1a;依據相鄰幀之間的時間間隔是否落在期望值的 20% 范圍內。 音頻…

【Python】文件讀取:逐行讀取應用實例——從一個JSONL文件中逐行讀取文件

從一個JSONL文件中逐行讀取文件&#xff0c;并將這些問題保存到一個新的JSONL文件中 import json import argparse import os # 導入os模塊用于檢查文件是否存在def read_questions_from_jsonl(file_path, limit):"""從JSONL文件中讀取指定數量的question部分…

百寶箱生成智能體

點擊新建應用 工作流如下&#xff1a; 點擊發布 點擊Web服務&#xff0c;上架

嵌入式 數據結構學習(五) 棧與隊列的實現與應用

一、棧(Stack)詳解 1. 棧的基本概念 棧的定義與特性 后進先出(LIFO)&#xff1a;最后入棧的元素最先出棧 操作限制&#xff1a;只能在棧頂進行插入(push)和刪除(pop)操作 存儲位置&#xff1a;我們實現的鏈棧位于堆區(malloc分配)&#xff0c;系統棧區存儲函數調用信息 棧…

匯編與接口技術:8259中斷實驗

一、實驗目的 該實驗使學生掌握8259向量中斷方式的硬件連接和軟件編程的方法&#xff0c;同時使同學掌握中斷和其它接口芯片配合來完成某一特定任務的方法。 二、實驗內容 1、手動產生單脈沖作為中斷請求信號連接到MIRQ3上和SIRT10上。每按一次開關產生一次中斷&#xff0c;…

Ajax的初步學習

一、什么是 Ajax&#xff1f; Ajax (Asynchronous JavaScript and XML) 是一種無需重新加載整個網頁的情況下&#xff0c;能夠更新部分網頁的技術。通過在后臺與服務器進行少量數據交換&#xff0c;Ajax 可以使網頁實現異步更新。 主要特性&#xff1a; 異步性 (Asynchronous…

OOM電商系統訂單緩存泄漏,這是泄漏還是溢出

電商系統訂單緩存泄漏的本質分析一、明確概念區別內存泄漏&#xff08;Memory Leak&#xff09;定義&#xff1a;對象已經不再被使用&#xff0c;但由于被錯誤引用而無法被垃圾回收特點&#xff1a;內存使用量隨時間持續增長&#xff0c;最終可能導致OOM類比&#xff1a;像浴缸…

二進制安全-匯編語言-02-寄存器

二、寄存器 水滴石穿 一個典型的CPU由運算器、控制器、寄存器等器件構成&#xff0c;這些器件靠內部總線相連 內部總線實現CPU內部各個器件之間的聯系&#xff0c;外部總線實現CPU和主板上其他器件的聯系 簡單說&#xff0c;在CPU中&#xff1a; 運算器進行信息處理寄存器進…

Java——初始guava(1)

基于 Google Guava 官方教程的解答 ?? Guava 提供了哪些 JDK 不具備的 API? Guava 擴展了 JDK 的集合框架,提供了多種 JDK 沒有的實用 API: 不可變集合(Immutable Collections) ImmutableList、ImmutableSet、ImmutableMap 等特性:創建后不可修改,線程安全,性能優于…

day53

import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset import numpy as np from sklearn.preprocessing import MinMaxScaler from sklearn.datasets import load_iris import warnings # 忽略不必要的警…

c++ python 共享內存

一、目的 是為了c來讀取并解碼傳遞給python&#xff0c;Python做測試非常方便&#xff0c;c 和 python之間必須定好協議&#xff0c;整體使用c 來解碼&#xff0c;共享內存傳遞給python 二、主類 主類&#xff0c;串聯decoder&#xff0c;注意decoder并沒有直接在顯存里面穿…