当前位置: 首页 > news >正文

全面的 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.dtcms.com/a/264546.html

相关文章:

  • 将文件使用base64存入数据库并在微信小程序中实现文件下载
  • springboot 显示打印加载bean耗时工具类
  • iOS App无源码安全加固实战:如何对成品IPA实现结构混淆与资源保护
  • python中两种策略模式的实现
  • 2-RuoYi-UI管理平台的启动
  • 大语言模型随意猜测网址引发网络安全危机
  • 零信任安全:重塑网络安全架构的革命性理念
  • 【Unity3D实现加载在线地图——WebGL】
  • 【ABAP】 从无到有 新建一个Webdynpro程序
  • 同一水平的 RISC-V 架构的 MCU,和 ARM 架构的 MCU 相比,运行速度如何?
  • Tomcat log日志解析
  • 【Linux】文件权限以及特殊权限(SUID、SGID)
  • Highcharts 安装使用教程
  • Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
  • flutter flutter_vlc_player播放视频设置循环播放失效、初始化后获取不到视频宽高
  • 机器学习:集成学习方法之随机森林(Random Forest)
  • AWS RDS Aurora全局数据库转区域数据库实战指南:无缝迁移零停机
  • Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
  • php上传或者压缩图片后图片出现倒转或者反转的问题
  • Hyper-YOLO: When Visual Object Detection Meets Hypergraph Computation
  • 在Ubuntu上多网卡配置HTTP-HTTPS代理服务器
  • c语言中的函数II
  • 今日学习:音视频领域入门文章参考(待完善)
  • 数据结构:数组(Array)
  • 文心快码答用户问|Comate AI IDE专场
  • 文心4.5开源模型部署实践
  • 使用Vue3实现输入emoji 表情包
  • 阿里云AppFlow AI助手打造智能搜索摘要新体验
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究
  • 【Unity】MiniGame编辑器小游戏(八)三国华容道【HuarongRoad】