Spring cloud stream【消息分区】

// 将需要发送的消息封装为Message对象

Message message = MessageBuilder

.withPayload§

.build();

for (int i = 0; i < 10; i++) {

// 发送多条消息到队列中

sendService.send().send(message );

}

}

}

10条消息被随机的分散到了两个消费者中:

在这里插入图片描述

在这里插入图片描述

我们可以看到A中6条消息,B中4条消息,而且这是随机的,下次执行的结果肯定不一样。

[](()分区


[](()1.发送者中配置

spring.application.name=stream-partition-sender

server.port=9060

#设置服务注册中心地址,指向另一个注册中心

eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

#rebbitmq 链接信息

spring.rabbitmq.host=192.168.88.150

spring.rabbitmq.port=5672

spring.rabbitmq.username=dpb

spring.rabbitmq.password=123

spring.rabbitmq.virtualHost=/

对应 MQ 是 exchange outputProduct自定义的信息

spring.cloud.stream.bindings.outputProduct.destination=exchangeProduct

#通过该参数指定了分区键的表达式规则

spring.cloud.stream.bindings.outputProduct.producer.partitionKeyExpression=payload

#指定了消息分区的数量。

spring.cloud.stream.bindings.outputProduct.producer.partitionCount=2

[](()2.消费者中配置

服务A

spring.application.name=stream-partition-receiverA

server.port=9070

#设置服务注册中心地址,指向另一个注册中心

eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

#rebbitmq 链接信息

spring.rabbitmq.host=192.168.88.150

spring.rabbitmq.port=5672

spring.rabbitmq.username=dpb

spring.rabbitmq.password=123

spring.rabbitmq.virtualHost=/

对应 MQ 是 exchange 和消息发送者的 交换器是同一个

spring.cloud.stream.bindings.inputProduct.destination=exchangeProduct

具体分组 对应 MQ 是 队列名称 并且持久化队列 inputProduct 自定义

spring.cloud.stream.bindings.inputProduct.group=groupProduct999

#开启消费者分区功能

spring.cloud.stream.bindings.inputProduct.consumer.partitioned=true

#指定了当前消费者的总实例数量

spring.cloud.stream.instanceCount=2

#设置当前实例的索引号,从 0 开始

spring.cloud.stream.instanceIndex=0

服务B

spring.application.name=stream-partition-receiverB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值