当前位置: 首页 > 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.lqws.cn/news/605863.html

相关文章:

  • HarmonyOS学习记录2
  • Linux平台MinGW32/MinGW64交叉编译完全指南:原理、部署与组件详解
  • 计算机网络(五)数据链路层 MAC和ARP协议
  • RuoYi框架低代码特性
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • Java项目:基于SSM框架实现的软件工程项目管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • python: 字符串编码和解码
  • CAN转Modbus TCP网关赋能食品搅拌机智能协同控制
  • 支持向量机(SVM)在脑部MRI分类中的深入应用与实现
  • Django全栈开发:架构解析与性能优化实战
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究
  • 【算法】动态规划 矩阵:120. 三角形最小路径和
  • 达梦数据库linux安装
  • 飞算 JavaAI 智控引擎:全链路开发自动化新图景
  • 自动化Docker容器化安装与配置工具介绍
  • 7月2日星期三今日早报简报微语报早读
  • Intellij IDEA 2023的下载和安装
  • Servlet开发流程(包含IntelliJ IDEA项目添加Tomcat依赖的详细教程)
  • 【技术前沿:飞算JavaAI如何用AI引擎颠覆传统Java开发模式】
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • 开源计算机视觉的基石:OpenCV 全方位解析
  • 解决 npm install canvas@2.11.2 失败的问题
  • 【公司环境下发布个人NPM包完整教程】
  • 算法笔记上机训练实战指南刷题
  • vue-36(为组件编写单元测试:属性、事件和方法)
  • Docker Dify安装 完整版本
  • 客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)
  • (一)大语言模型的关键技术<-AI大模型构建
  • 【安卓Sensor框架-3】Sensor事件上报流程
  • Binder机制与实现原理解析