Spring Cloud Stream支持常规配置选项以及绑定和绑定器的配置。一些绑定器允许额外的绑定属性来支持中间件特定的功能。
可以通过Spring Boot支持的任何机制向Spring Cloud Stream应用程序提供配置选项。这包括应用程序参数,环境变量和YAML或.properties文件。
基础配置
spring.cloud.stream.instanceCount
应用程序部署实例的数量。必须设置分区,如果使用Kafka。
默认值:1
。
spring.cloud.stream.instanceIndex
应用程序的实例索引:从0
到instanceCount
-1的数字。用于分区和使用Kafka。在Cloud Foundry中自动设置以匹配应用程序的实例索引。
spring.cloud.stream.dynamicDestinations
可以动态绑定的目标列表(例如,在动态路由方案中)。如果设置,只能列出目的地。
默认值:空(允许任何目的地绑定)。
spring.cloud.stream.defaultBinder
如果配置了多个绑定器,则使用默认的binder。在Classpath上查看多个Binders。
默认值:空。
spring.cloud.stream.overrideCloudConnectors
此属性仅适用于cloud
配置文件激活且Spring Cloud连接器随应用程序一起提供。如果属性为false(默认值),绑定器将检测适合的绑定服务(例如,RabbitMQ绑定器在Cloud Foundry中绑定的RabbitMQ服务),并将使用它来创建连接(通常通过Spring Cloud连接器)。当设置为true时,此属性指示绑定器完全忽略绑定的服务,并依赖Spring Boot属性(例如依赖于RabbitMQ绑定器环境中提供的spring.rabbitmq.*
属性)。当连接到多个系统时,此属性的典型用法将嵌套在定制环境中。
默认值:false。
绑定通道配置
绑定属性使用格式spring.cloud.stream.bindings.<channelName>.<property>=<value>
提供。<channelName>
表示正在配置的通道的名称(例如Source
的output
)。
在下面的内容中,我们指出我们在哪里省略了spring.cloud.stream.bindings.<channelName>.
前缀,并且只关注属性名称,同时理解前缀将包含在运行时。
通用配置
以下绑定属性可用于输入和输出绑定,并且必须以spring.cloud.stream.bindings.<channelName>.
为前缀。
destination
绑定中间件上的通道的目标目标(例如,RabbitMQ交换机或Kafka主题)。如果通道绑定为消费者,则可以将其绑定到多个目标,并且目标名称可以指定为逗号分隔的字符串值。如果未设置,则使用通道名称。
group
渠道的消费群体。仅适用于入站绑定。参见消费者群体。
默认值:null(表示匿名消费者)。
content-type
频道的内容类型。
默认值:null(以便不执行类型强制)。
binder
这种绑定使用的粘合剂。有关详细信息,请参阅Classpath上的Multiple Binders。
默认值:null(默认的binder将被使用,如果存在)。
消费者配置
以下绑定属性仅适用于输入绑定,并且必须以spring.cloud.stream.bindings.<channelName>.consumer.
为前缀。
concurrency
入站消费者的并发性。
默认值:1
。
partitioned
消费者是否从分区生产者接收数据。
默认值:false
。
headerMode
设置为raw
时,禁用输入头标题解析。仅适用于不支持消息头的消息中间件,并且需要头部嵌入。入站数据来自外部Spring Cloud Stream应用程序时很有用。
默认值:embeddedHeaders
。
maxAttempts
重新处理入站邮件的尝试次数。
默认值:3
。
backOffInitialInterval
退避初始间隔重试。
默认值:1000
。
backOffMaxInterval
最大回退间隔。
默认值:10000
。
backOffMultiplier
退避倍数。
默认值:2.0
。
以下绑定属性仅适用于输入绑定,并且必须以spring.cloud.stream.bindings.<channelName>.consumer.
为前缀。
并发
入站消费者的并发性。
默认值:1
。
分区
消费者是否从分区生产者接收数据。
默认值:false
。
headerMode
设置为raw
时,禁用输入头标题解析。仅适用于不支持消息头的消息中间件,并且需要头部嵌入。入站数据来自外部Spring Cloud Stream应用程序时很有用。
默认值:embeddedHeaders
。
maxAttempts
重新处理入站邮件的尝试次数。
默认值:3
。
backOffInitialInterval
退避初始间隔重试。
默认值:1000
。
backOffMaxInterval
最大回退间隔。
默认值:10000
。
backOffMultiplier
退避倍数。
默认值:2.0
。
生产者配置
以下绑定属性仅适用于输出绑定,并且必须以spring.cloud.stream.bindings.<channelName>.producer.
为前缀。
partitionKeyExpression
一个确定如何分配出站数据的SpEL表达式。如果设置,或者如果设置了partitionKeyExtractorClass
,则该通道上的出站数据将被分区,并且partitionCount
必须设置为大于1的值才能生效。这两个选项是相互排斥的。请参阅分区支持。
默认值:null。
partitionKeyExtractorClass
一个PartitionKeyExtractorStrategy
实现。如果设置,或者如果设置了partitionKeyExpression
,则该通道上的出站数据将被分区,并且partitionCount
必须设置为大于1的值才能生效。这两个选项是相互排斥的。请参阅分区支持。
默认值:null。
partitionSelectorClass
一个PartitionSelectorStrategy
实现。与partitionSelectorExpression
相互排斥。如果没有设置,则分区将被选为hashCode(key) % partitionCount
,其中key
通过partitionKeyExpression
或partitionKeyExtractorClass
计算。
默认值:null。
partitionSelectorExpression
用于自定义分区选择的SpEL表达式。与partitionSelectorClass
相互排斥。如果没有设置,则分区将被选择为hashCode(key) % partitionCount
,其中key
通过partitionKeyExpression
或partitionKeyExtractorClass
计算。
默认值:null。
partitionCount
如果启用分区,则数据的目标分区数。如果生产者被分区,则必须设置为大于1的值。在Kafka,解释为提示; 而是使用更大的和目标主题的分区计数。
默认值:1
。
requiredGroups
生成者必须确保消息传递的组合的逗号分隔列表,即使它们在创建之后启动(例如,通过在RabbitMQ中预先创建持久队列)。
headerMode
设置为raw
时,禁用输出上的标题嵌入。仅适用于不支持消息头的消息中间件,并且需要头部嵌入。在非Spring Cloud Stream应用程序生成数据时很有用。
默认值:embeddedHeaders
。