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

  • 相关阅读:
    Memcached基本架构和思想
    varnish和squid的对比
    常用排序讲解
    数据结构堆的一种比较明白的讲解
    磁盘挂载MOUNT 445问题集
    mysql 如何提高批量导入的速度
    云平台涅槃重生计划
    NumPy、SciPy 等Python包在Windows下的whl安装包下载
    表迁移工具的选型-复制ibd的方法
    下一步的技术研究方向
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12301049.html
Copyright © 2020-2023  润新知