MST

星途 面试题库

面试题:消息队列之RocketMQ消费者基础使用

在RocketMQ消费者(Consumer)中,如何订阅一个主题(Topic)及其相关的消息模式?有哪几种常见的订阅方式,它们的区别是什么?
27.2万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

在RocketMQ消费者(Consumer)中订阅主题(Topic)及其相关消息模式可以通过以下方式:

常见订阅方式

  1. 订阅单个主题

    consumer.subscribe("TopicName", "*");
    
    • TopicName 是要订阅的主题名称。
    • * 表示订阅该主题下的所有消息,这是一种简单的全量订阅方式。
  2. 订阅多个主题

    consumer.subscribe("Topic1", "*");
    consumer.subscribe("Topic2", "*");
    

    可以多次调用 subscribe 方法来订阅多个主题。

  3. 按Tag订阅

    consumer.subscribe("TopicName", "Tag1 || Tag2");
    
    • Tag1 || Tag2 表示订阅 TopicName 主题下带有 Tag1 或者 Tag2 的消息。通过这种方式可以对消息进行更细粒度的过滤,只接收感兴趣的消息子集。

区别

  1. 全量订阅(*
    • 优点:能接收到主题下的所有消息,适用于需要处理主题下全部数据的场景。
    • 缺点:无法对消息进行过滤,如果只关心部分消息,可能会接收到大量不需要处理的消息,增加处理负担。
  2. 按Tag订阅
    • 优点:可以精确控制接收到的消息,减少不必要的消息处理,提高处理效率。适用于只对特定类型消息感兴趣的场景。
    • 缺点:如果业务场景中消息类型变化频繁,可能需要频繁调整订阅的Tag,增加维护成本。