参考:http://blog.didispace.com/spring-cloud-starter-dalston-7-4/
目录
使用消息分区
在Spring Cloud Stream中实现消息分区非常简单,我们可以根据消费组示例做一些配置修改就能实现,具体如下:
- 在消费者应用
SinkReceiver
中,我们对配置文件做一些修改,具体如下:
|
从上面的配置中,我们可以看到增加了这三个参数:
-
spring.cloud.stream.bindings.input.consumer.partitioned
:通过该参数开启消费者分区功能; -
spring.cloud.stream.instanceCount
:该参数指定了当前消费者的总实例数量; spring.cloud.stream.instanceIndex
:该参数设置当前实例的索引号,从0开始,最大值为spring.cloud.stream.instanceCount
参数 - 1。我们试验的时候需要启动多个实例,可以通过运行参数来为不同实例设置不同的索引值。
- 在生产者应用
SinkSender
中,我们对配置文件也做一些修改,具体如下:
|
从上面的配置中,我们可以看到增加了这两个参数:
-
spring.cloud.stream.bindings.output.producer.partitionKeyExpression
:通过该参数指定了分区键的表达式规则,我们可以根据实际的输出消息规则来配置SpEL来生成合适的分区键; -
spring.cloud.stream.bindings.output.producer.partitionCount
:该参数指定了消息分区的数量。
到这里消息分区配置就完成了,我们可以再次启动这两个应用,同时消费者启动多个,但需要注意的是要为消费者指定不同的实例索引号,这样当同一个消息被发给消费组时,我们可以发现只有一个消费实例在接收和处理这些相同的消息。