本文对spring cloud stream 的相关配置,进行逐一注释说明,作为工具在需要的时候查看使用。配置中的输入(input)输出(output)通道可以换成自己的,详情如下 spring: cloud: stream: #实例数量,默认1 instance-count: 1 #实例索引,从0到instanceCount-1,用于分区和使用kafka。在Cloud Foundry中自动设置以匹配应用程序的实例索引。 instance-index: 0 #默认binder default-binder: rabbit #可以动态绑定的目标列表(如:动态路由),如果设置,则只能绑定列出的目的地 dynamic-destinations: default: content-type: application/json bindings: error: destination: myError #错误消息通道 input: destination: streamdemo group: streamdemo content-type: application/json binder: rabbit consumer: #消费者并发 默认1 concurrency: 1 #是否分区接收数据,默认false partitioned: false #头信息模式,设置为raw时,禁用输入头文件解析。仅适用于不支持消息头的消息中间件,并且需要头部嵌入。入站数据来自外部Spring Cloud Stream应用程序时很有用。 header-mode: embeddedHeaders #重试次数(包括第一次),设置为1禁用重试,默认值3 max-attempts: 1 #初始回退间隔时间 back-off-initial-interval: 1000 #最大回退间隔时间 back-off-max-interval: 10000 #回退倍数 back-off-multiplier: 2.0 #大于0时,表示允许自定义该消费者的实例索引,-1时使用spring.cloud.stream.instance-index instance-index: -1 #大于0时表示自定义消费者实例技术,-1时默认使用spring.cloud.stream.instanceCount instance-count: -1 producer: #一个确定如何分配出站数据的SpEL表达式 partition-key-expression: #一个PartitionKeyExtractorStrategy实现。如果设置,或者如果设置了partitionKeyExpression,则该通道上的出站数据将被分区,并且partitionCount必须设置为大于1的值才能生效。这两个选项是相互排斥的。 partition-key-extractor-class: #一个PartitionSelectorStrategy实现。与partitionSelectorExpression相互排斥。如果没有设置,则分区将被选为hashCode(key) % partitionCount,其中key通过partitionKeyExpression或partitionKeyExtractorClass计算。 partition-selector-class: partition-selector-expression: #如果启用分区,则数据的目标分区数。如果生产者被分区,则必须设置为大于1的值。在Kafka,解释为提示; 而是使用更大的和目标主题的分区计数。 partition-count: 1 #生成者必须确保消息传递的组合的逗号分隔列表,即使它们在创建之后启动(例如,通过在RabbitMQ中预先创建持久队列)。 required-groups: output: destination: streamdemo input1: destination: streamdemo #配置多个binder,每个binder配置不同的环境变量 binders: #binder的名称 rabbit: #binder类型 rabbit/kafka,或者自定义的类型 type: rabbit #配置是否会继承应用程序本身的环境,默认true inheritEnvironment: true #是否为默认binder,默认true default-candidate: true #binder的环境变量,参考消息中间件相关配置 environment: spring: rabbitmq: host: 10.1.1.73 password: username: port: kafka: binder: #kafka brokers,默认localhost brokers: localhost #kafka 端口号,默认9092 default-broker-port: 9092 #kafka zk节点,默认localhost zk-nodes: localhost #zookeeper 端口 default-zk-port: 2181 #配置,map #configuration: #自定义标题列表 headers: #偏移量保存时间(ms)窗口,0:忽略,默认10000(ms) offset-update-time-window: 10000 #偏移量保存次数,与时间窗口互斥 offset-update-count: 0 #broker 需要的ack数量 required-acks: 1 #只有设置autoCreateTopics或autoAddPartitions才有效 min-partition-count: 1 #自动创建topic时 生成的副本数量 replication-factor: 1 #自动创建主题 auto-create-topics: true #如果设置为true,则绑定器将根据需要创建新的分区。如果设置为false,则绑定器将依赖于已配置的主题的分区大小。如果目标主题的分区计数小于预期值,则绑定器将无法启动。 auto-add-partitions: false #socket 缓冲区大小 socket-buffer-size: 2097152 bindings: input: consumer: #主题分区消费者组成员之间自动平衡 auto-rebalance-enabled: true #自动提交偏移量 auto-commit-offset: true auto-commit-on-error: #连接恢复尝试之间的间隔,以毫秒为单位。 recovery-interval: 5000 #是否将消费者偏移量重置为start-offset提供的值 reset-offsets: false #新组的起始偏移量,或resetOffsets为true时的起始偏移量。允许的值:earliest,latest,默认值:null(相当于earliest) start-offset: earliest enable-dlq: false configuration: #接收错误消息的DLQ主题的名称。默认值:null(如果未指定,将导致错误的消息将转发到名为error:<destination>:<group>的主题)。: dlq-name: producer: buffer-size: 16348 #生产者是否是同步的 sync: false #生产者在发送之前等待多长时间,以便允许更多消息在同一批次中累积。(通常,生产者根本不等待,并且简单地发送在先前发送进行中累积的所有消息。)非零值可能会以延迟为代价增加吞吐量。 batch-timeout: 0 configuration: rabbit: binder: #RabbitMQ管理插件网址的逗号分隔列表。仅在nodes包含多个条目时使用。此列表中的每个条目必须在spring.rabbitmq.addresses中具有相应的条目。默认空 admin-addresses: #RabbitMQ节点名称的逗号分隔列表。当多个条目用于查找队列所在的服务器地址时。此列表中的每个条目必须在spring: rabbitmq:addresses中具有相应的条目。: nodes: #压缩绑定的压缩级别,见java.util. zip.Deflater。: compression-level: 1 bindings: input: consumer: #确认模式 acknowledge-mode: auto #是否自动声明DLQ并将其绑定到绑定器DLX。 auto-bind-dlq: false #将队列绑定到交换机的路由密钥(如果bindQueue为true)。将附加分区目的地-<instanceIndex>。 binding-routing-key: # #是否将队列绑定到目的地交换机?如果您已经设置了自己的基础设施并且先前已经创建/绑定了队列,请设置为false。 bind-queue: true #死信队列名,默认值:prefix+destination.dlq dead-letter-queue-name: #分配给队列的DLX; 如果autoBindDlq为true,默认值,'prefix + DLX' dead-letter-exchange: #死信队列路由key,默认值 destination dead-letter-routing-key: destination #是否声明exchange declare-exchange: true #是否将交换机声明为delayed message exchange ,需要在rabbit server上安装延迟交换机插件 x-delayed-type 参数设置为 exchangeType delayed-exchange: false #死信队列,死信交换,默认空 dlq-dead-letter-exchange: #死信队列,死信路由key,默认空 dlq-dead-letter-routing-key: #死信队列超时时间,默认不超时 dlq-expires: #死信队列最大消息数,默认不限制 dlq-max-length: #死信队列中的最大字节数,默认不限制 dlq-max-length-bytes: #死信队列消息最大优先级,默认空 dlq-max-priority: #声明时应用于死信队列的默认生存时间(ms) dlq-ttl: #订阅是否持久,仅当group也被设置时有效 durable-subscription: true #如果declare-exchange 为true ,则exchange 是否自动删除(删除最后一个队列后删除) exchange-auto-delete: true #如果declareExchange 为true 则exchange 是否持久 exchange-durable: true #exchange type,支持,direct,fanout,topic exchange-type: topic # 未使用的队列多久被删除(ms),默认不限制 expires: #入站信息映射的头文件模式,默认['*'] header-patterns: #最大消费者数量,默认1 max-concurrency: 1 #队列中最大消息数量,默认不限制 max-length: #消息最大字节数,默认不限制 max-length-bytes: #消息最大优先级,默认空 max-priority: #预取计数 prefetch: 1 #destination 和queuename的前缀 prefix: #连接恢复尝试之间的间隔,以毫秒为单位。 recovery-interval: 5000 #当禁用重试,或发布到toDlq为false时,是否重新发送失败消息 requeue-rejected: false #当republishToDlq为true时,指定重新发布的邮件的传递模式。默认值DeliveryMode.PERSISTENT republish-delivery-mode: #默认情况下,尝试重试后失败的消息将被拒绝。如果配置了死信队列(DLQ),则RabbitMQ将将失败的消息(未更改)路由到DLQ。如果设置为true,则绑定器将重新发布具有附加头的DLQ的失败消息,包括最终失败的原因的异常消息和堆栈跟踪。 republish-to-dlq: false #是否使用交易渠道。 transacted: #声明(ms)时默认适用于队列的时间 ttl: #ACK之间的传递数量。 tx-size: producer: #是否自动声明DLQ并将其绑定到绑定器DLX。 auto-bind-dlq: false #是否开启生产者批量发送消息 batching-enabled: false #批量发送消息数量 batch-size: 100 #批量缓冲数量限制 batch-buffer-limit: 10000 #批量发送消息超时时间 batch-time-out: 5000 #routing key 将队列绑定到交换机的路由密钥(如果bindQueue为true)。仅适用于非分区目的地。仅适用于requiredGroups,然后仅提供给这些组。 binding-routing-key: # #是否将队列绑定到目的地交换机?如果您已经设置了自己的基础架构并且先前已经创建/绑定了队列,请设置为false。仅适用于requiredGroups,然后仅提供给这些组。 bind-queue: true #是否压缩数据 compress: false #死信队列名称 默认值:prefix+destination.dlq dead-letter-queue-name: #死信队列交换机 默认值:'prefix + DLX' dead-letter-exchange: #死信队列路由key,默认:destination dead-letter-routing-key: destination #是否生命交换机 declare-exchange: true #评估应用于消息(x-delay头)的延迟的Spel表达式 - 如果交换不是延迟的消息交换,则不起作用。默认值,No delay: #是否将交换声明为Delayed Message Exchange - 需要经纪人上的延迟消息交换插件。x-delayed-type参数设置为exchangeType。 delayed-exchange: false #消息发送方式 默认值 PERSISTENT delivery-mode: PERSISTENT #死信队列,死信交换,默认空 dlq-dead-letter-exchange: #死信队列,死信路由key,默认空 dlq-dead-letter-routing-key: #死信队列超时时间,默认不超时 dlq-expires: #死信队列最大消息数,默认不限制 dlq-max-length: #死信队列中的最大字节数,默认不限制 dlq-max-length-bytes: #死信队列消息最大优先级,默认空 dlq-max-priority: #声明时应用于死信队列的默认生存时间(ms),默认不限制 dlq-ttl: #是否自动删除exchange,默认 true exchange-auto-delete: #exchange是否持久,默认true exchange-durable: #exchange 类型,默认topic exchange-type: #队列过期时间,默认不过期 expires: #头信息映射到出站消息的模式,默认值['*'] 所有标题 header-patterns: #消息最大长度 max-length: #消息最大字节数,默认不限制 max-length-bytes: #消息最大优先级,默认空 max-priority: #交换机前缀,默认空 prefix: #路由key表达式,默认值destination或者destination-<partition> routing-key-expression: #是否使用交易通道,默认false transacted: false #队列存活时间,默认不限制 ttl: