MST

星途 面试题库

面试题:消息队列灰度发布策略中,如何实现消息的分流?

在消息队列灰度发布策略实施过程中,为了让一部分消息进入灰度版本的消费者,另一部分进入正式版本的消费者,通常会有多种消息分流方式。请阐述至少两种常见的消息分流方法及其原理。
31.2万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

基于消息属性分流

  1. 原理:在消息生产者发送消息时,为消息添加特定的属性,比如一个名为 grayFlag 的属性,值为 truefalse。消息队列在投递消息时,消费者可以根据这个属性来决定是否接收消息。灰度版本的消费者配置为只接收 grayFlagtrue 的消息,而正式版本的消费者配置为接收 grayFlagfalse 的消息。这样就可以实现按照消息属性将消息分流到不同版本的消费者。

基于消息标签分流

  1. 原理:消息队列一般支持为消息设置标签(Tag)。生产者在发送消息时,给灰度相关的消息设置一个特定的标签,如 grayTag,给正式消息设置另一个标签,如 prodTag。消费者端配置监听不同的标签,灰度版本消费者监听 grayTag 标签的消息,正式版本消费者监听 prodTag 标签的消息,从而实现消息分流。

基于消息路由键分流(针对有路由功能的消息队列,如 RabbitMQ)

  1. 原理:在 RabbitMQ 中,生产者发送消息时会指定一个路由键(Routing Key)。可以约定特定的路由键用于灰度消息,例如 gray.#(这里 # 是通配符,代表匹配任意字符),其他路由键用于正式消息。通过交换机(Exchange)的绑定规则,将灰度消息路由到灰度版本消费者对应的队列,正式消息路由到正式版本消费者对应的队列。