通过之前的学习,我们已经能够在多实例环境下,保证同一消息只被一个消费者实例进行接收和处理。但是,对于一些特殊场景,除了要保证单一实例消费之外,还希望那些具备相同特征的消息都能够被同一个实例进行消费。这时候我们就需要对消息进行分区处理。

需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码:壹零叁八柒柒肆六二六

使用消息分区 在Spring Cloud Stream中实现消息分区非常简单,我们可以根据消费组示例做一些配置修改就能实现,具体如下:

在消费者应用SinkReceiver中,我们对配置文件做一些修改,具体如下:

spring.cloud.stream.bindings.input.group=Service-Aspring.cloud.stream.bindings.input.destination=greetings
spring.cloud.stream.bindings.input.consumer.partitioned=true
spring.cloud.stream.instanceCount=2
spring.cloud.stream.instanceIndex=0
复制代码

从上面的配置中,我们可以看到增加了这三个参数:

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.destination=greetings
spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload
spring.cloud.stream.bindings.output.producer.partitionCount=2
复制代码

从上面的配置中,我们可以看到增加了这两个参数:

spring.cloud.stream.bindings.output.producer.partitionKeyExpression:通过该参数指定了分区键的表达式规则,我们可以根据实际的输出消息规则来配置SpEL来生成合适的分区键;

spring.cloud.stream.bindings.output.producer.partitionCount:该参数指定了消息分区的数量。

到这里消息分区配置就完成了,我们可以再次启动这两个应用,同时消费者启动多个,但需要注意的是要为消费者指定不同的实例索引号,这样当同一个消息被发给消费组时,我们可以发现只有一个消费实例在接收和处理这些相同的消息。

java B2B2C Springcloud多租户电子商城系统

转载于:https://juejin.im/post/5c257d126fb9a04a102f594d

java B2B2C Springcloud多租户电子商城系统-消息驱动的微服务(消费分区)相关推荐

  1. java B2B2C Springcloud多租户电子商城系统-spring-cloud-eureka

    介绍 spring-cloud-eureka,被动式的服务发现,统一监控和管理你的服务列表.电子商务平台源码请加企鹅求求:一零三八七七四六二六. 什么是服务发现? 服务发现就像聊天室一个,每个用户来的 ...

  2. java B2B2C Springcloud多租户电子商城系统-集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服 ...

  3. java B2B2C Springcloud多租户电子商城系统- Gateway 之Predict篇...

    predicate简介 Predicate来自于java8的接口.Predicate 接受一个输入参数,返回一个布尔值结果.该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与, ...

  4. java B2B2C Springcloud多租户电子商城系统-spring-cloud-eureka...

    介绍 spring-cloud-eureka,被动式的服务发现,统一监控和管理你的服务列表. 什么是服务发现? 服务发现就像聊天室一个,每个用户来的时候去服务器上注册,这样他的好友们就能看到你,你同时 ...

  5. java B2B2C Springcloud多租户电子商城系统-(七)高可用的分布式配置中心(Spring Cloud Config)...

    讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 一. ...

  6. java B2B2C Springcloud多租户电子商城系统-Spring Cloud Sleuth

    在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整 ...

  7. java B2B2C Springcloud多租户电子商城系统-docker-feign-hystrix-ribbon(七)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 在上一节中,我们讨论了feign+hystrix在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点, ...

  8. java B2B2C Springboot多租户电子商城系统-spring-cloud-eureka-consumer...

    介绍 spring-cloud-eureka,更加具体的内容,这里将会介绍远程服务调用和及其负载均衡. 我们将我们的服务注册在我们的服务中心里,那么如何去调用这些服务呢?我们可以用使用远程服务调用来解 ...

  9. java B2B2C Springboot多租户电子商城系统-Eureka源码解析...

    Eureka的限流算法类RateLimiter是基于令牌桶算法来实现的,下面看一看令牌桶算法的原理: 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零 ...

最新文章

  1. 博士补贴125万,硕士70万本科21万,浙江某地人才(简直是抢人)新政!
  2. log4j 超完美配置文件!
  3. C# 3.0新特性系列(1):隐含类型局部变量
  4. 忘记mysq rootl密码
  5. pytorch model.eval()的作用
  6. webpack 读取文件夹下的文件_TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建...
  7. TEGer看过来,他二哥带你去看大世界!
  8. 04-doucument对象属性和方法
  9. 主流浏览器和内核及Web标准
  10. rnn神经网络模型_ICLR 2019 | 与胶囊网络异曲同工:Bengio等提出四元数循环神经网络...
  11. c语言做一个抽奖小程序,小程序插件使用- 抽奖助手
  12. 如何让一个div里面的div垂直居中?
  13. 我经常逛的技术网站,个个经典
  14. LDD3 第15章 内存映射和DMA
  15. java 月的天数_Java获取某月天数
  16. 基于C# SQLServer开发学员管理系统
  17. 正弦余弦编码器与增量编码器的区别
  18. php 生成迅雷地址,php实现把url转换迅雷thunder资源下载地址的方法,_PHP教程
  19. 年底了,该对自己说说总结的话了
  20. PMP章节练习—项目经理的角色

热门文章

  1. transformers、pytorch-transformers、pytorch-pretrained-bert的关系
  2. 很遗憾,自然语言理解是AI尚未攻克的领域
  3. 认知科学顶刊:挑战过去50年神经科学观点,人类智力的优势或来自于记忆储存方式...
  4. 打开脑科学研究的另一扇窗:脑神经化学活体原位电化学分析新技术
  5. 一文告诉你,谷歌是否真的实现了「量子至上」
  6. 由4G向5G进发的物联网:NB-IoT与LTE-M
  7. 程序员都想,却不敢做的事?我来!
  8. 四年磨一剑,机械出身的我是如何拿到蚂蚁金服 Offer 的!
  9. 不是吧!程序员今年在相亲市场上这么受欢迎?
  10. 腾讯SaaS生态战略再升级,“一云多端”助力企业数字化转型