Spring Cloud构建微服务架构:消息驱动的微服务Dalston版

使用消费组实现消息消费的负载均衡

通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。

默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来实现这样的功能,实现的方式非常简单,我们只需要在服务消费者端设置 属性即可,比如我们可以这样实现:

先创建一个消费者应用 ,实现了 主题上的输入通道绑定,它的实现如下:

为了将 的输入通道目标设置为 主题,以及将该服务的实例设置为同一个消费组,做如下设置:

通过 属性指定了该应用实例都属于 消费组,而 属性则指定了输入通道对应的主题名。

完成了消息消费者之后,我们再来实现一个消息生产者应用 ,具体如下:

为消息生产者 做一些设置,让它的输出通道绑定目标也指向 主题,具体如下:

到这里,对于消费分组的示例就已经完成了。分别运行上面实现的生产者与消费者,其中消费者我们启动多个实例。通过控制台,我们可以发现每个生产者发出的消息,会被启动的消费者以轮询的方式进行接收和输出。

博客原文:http://blog.didispace.com/spring-cloud-starter-dalston-7-3/

本文内容部分节选自我的《Spring Cloud微服务实战》

但对依赖的Spring Boot和Spring Cloud版本做了升级。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180130G04UAP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券