# Spring Cloud Stream RocketMQ 完整配置示例
# 适用于 Spring Boot 3.x + Spring Cloud 2023.x

spring:
  application:
    name: erp-service
  
  # Cloud Stream配置
  cloud:
    stream:
      # RocketMQ Binder配置
      rocketmq:
        binder:
          # NameServer地址（集群用分号分隔）
          namesrv-addr: ${ROCKETMQ_NAMESRV_ADDR:localhost:9876}
          # 开启消息追踪
          enable-msg-trace: true
          # 接入点配置
          access-key: rocketmq
          secret-key: rocketmq123
        # 默认生产者配置
        producer:
          # 开启消息追踪
          enable-msg-trace: true
          # 发送超时时间（毫秒）
          send-timeout: 3000
          # 最大消息大小
          max-message-size: 6291456
          # 异步发送失败重试次数
          retry-async-failure-when-send-async: 2
          # 自定义追踪Topic
          customized-trace-topic: RMQ_SYS_TRACE_TOPIC
      
      # 绑定器定义
      binders:
        rocketmq:
          type: rocketmq
          default-candidate: true
          environment:
            spring.cloud.stream.rocketmq.binder.namesrv-addr: ${ROCKETMQ_NAMESRV_ADDR:localhost:9876}
      
      # 函数式绑定配置（Spring Cloud Stream 4.0+ 推荐）
      function:
        definition: orderConsumer;inventoryConsumer;financeConsumer
      
      # 绑定器绑定配置
      bindings:
        # 订单输入通道
        orderConsumer-in-0:
          destination: order-topic
          content-type: application/json
          group: erp-order-consumer-group
          consumer:
            concurrency: 16
            maxAttempts: 3
            backOffInitialInterval: 1000
            backOffMaxInterval: 10000
            backOffMultiplier: 2.0
          binder: rocketmq
        
        # 库存输入通道
        inventoryConsumer-in-0:
          destination: inventory-topic
          content-type: application/json
          group: erp-inventory-consumer-group
          consumer:
            concurrency: 16
            maxAttempts: 3
          binder: rocketmq
        
        # 财务输入通道
        financeConsumer-in-0:
          destination: finance-topic
          content-type: application/json
          group: erp-finance-consumer-group
          consumer:
            concurrency: 12
            maxAttempts: 3
          binder: rocketmq
        
        # 订单输出通道
        orderProducer-out-0:
          destination: order-topic
          content-type: application/json
          producer:
            roundRobinRobin: false
            partitionCount: 8
          binder: rocketmq
        
        # 库存输出通道
        inventoryProducer-out-0:
          destination: inventory-topic
          content-type: application/json
          producer:
            roundRobinRobin: false
            partitionCount: 8
          binder: rocketmq
        
        # 财务输出通道
        financeProducer-out-0:
          destination: finance-topic
          content-type: application/json
          producer:
            roundRobinRobin: false
            partitionCount: 8
          binder: rocketmq
        
        # 通知输出通道
        notificationProducer-out-0:
          destination: notification-topic
          content-type: application/json
          binder: rocketmq

# RocketMQ 客户端配置
rocketmq:
  namesrv-addr: ${ROCKETMQ_NAMESRV_ADDR:localhost:9876}
  producer:
    group: ${spring.application.name}-producer-group
    retry-times-when-send-failed: 3
    timeout: 3000
    max-message-size: 6291456
  consumer:
    group: ${spring.application.name}-consumer-group
    consume-concurrency: 16
    max-retry-times: 3

# ERP系统配置
erp:
  rocketmq:
    topics:
      order: order-topic
      inventory: inventory-topic
      finance: finance-topic
      notification: notification-topic
      payment: payment-topic
    consumer:
      groups:
        order-group: erp-order-consumer-group
        inventory-group: erp-inventory-consumer-group
        finance-group: erp-finance-consumer-group
        notification-group: erp-notification-consumer-group
        payment-group: erp-payment-consumer-group

# 服务端口
server:
  port: ${PORT:8080}

# Actuator配置（用于健康检查）
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
  endpoint:
    health:
      show-details: always
  metrics:
    export:
      prometheus:
        enabled: true

# 日志配置
logging:
  level:
    root: INFO
    org.apache.rocketmq: INFO
    com.erp.mq: DEBUG
    org.springframework.cloud.stream: DEBUG
