Spring Cloud Stream分区分组原理图解

 更新时间:2020年03月04日 10:00:33   作者:天宇轩-王  
这篇文章主要介绍了Spring Cloud Stream的分区和分组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

消息分组

通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来实现这样的功能。

当把消费者复制一份,发现2个都能收到消息

2个消费者都加入同一个消费者

发现只有一个能收到

消息分区

有一些场景需要满足, 同一个特征的数据被同一个实例消费, 比如同一个id的传感器监测数据必须被同一
个实例统计计算分析, 否则可能无法获取全部的数据。又比如部分异步任务,首次请求启动task,二次
请求取消task,此场景就必须保证两次请求至同一实例.

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java利用钉钉机器人实现发送群消息

    Java利用钉钉机器人实现发送群消息

    这篇文章主要为大家详细介绍了Java语言如何通过钉钉机器人发送群消息通知,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • 利用ssh实现服务器文件上传下载

    利用ssh实现服务器文件上传下载

    这篇文章主要为大家详细介绍了如何利用ssh实现服务器文件上传下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Idea 2023.2.5配置插件、Maven的过程

    Idea 2023.2.5配置插件、Maven的过程

    这篇文章主要介绍了Idea 2023.2.5配置插件、Maven的过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • JAVA实现社会统一信用代码校验的方法

    JAVA实现社会统一信用代码校验的方法

    这篇文章主要介绍了JAVA实现社会统一信用代码校验的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • java objectUtils 使用可能会出现的问题

    java objectUtils 使用可能会出现的问题

    这篇文章主要介绍了java objectUtils 使用可能会出现的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring Bean后处理器详细介绍

    Spring Bean后处理器详细介绍

    Bean后置处理器允许在调用初始化方法前后对Bean进行额外的处理。可以在​Spring容器通过插入一个或多个BeanPostProcessor的实现来完成实例化,配置和初始化一个​bean​之后实现一些自定义逻辑回调方法
    2023-01-01
  • java freemarker实现动态生成excel文件

    java freemarker实现动态生成excel文件

    这篇文章主要为大家详细介绍了java如何通过freemarker实现动态生成excel文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Gradle进阶使用结合Sonarqube进行代码审查的方法

    Gradle进阶使用结合Sonarqube进行代码审查的方法

    今天小编就为大家分享一篇关于Gradle进阶使用结合Sonarqube进行代码审查的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java线程中synchronized和volatile关键字的区别详解

    Java线程中synchronized和volatile关键字的区别详解

    这篇文章主要介绍了Java线程中synchronized和volatile关键字的区别详解,synchronzied既能够保障可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性,volatile不需要加锁,比synchronized更轻量级,不会阻塞线程,需要的朋友可以参考下
    2024-01-01
  • JDBC 使用说明(流程、架构、编程)

    JDBC 使用说明(流程、架构、编程)

    这篇文章主要介绍了JDBC 使用说明,需要的朋友可以参考下
    2015-08-08

最新评论