面试题答案
一键面试在RocketMQ消费者(Consumer)中订阅主题(Topic)及其相关消息模式可以通过以下方式:
常见订阅方式
-
订阅单个主题:
consumer.subscribe("TopicName", "*");
TopicName
是要订阅的主题名称。*
表示订阅该主题下的所有消息,这是一种简单的全量订阅方式。
-
订阅多个主题:
consumer.subscribe("Topic1", "*"); consumer.subscribe("Topic2", "*");
可以多次调用
subscribe
方法来订阅多个主题。 -
按Tag订阅:
consumer.subscribe("TopicName", "Tag1 || Tag2");
Tag1 || Tag2
表示订阅TopicName
主题下带有Tag1
或者Tag2
的消息。通过这种方式可以对消息进行更细粒度的过滤,只接收感兴趣的消息子集。
区别
- 全量订阅(
*
):- 优点:能接收到主题下的所有消息,适用于需要处理主题下全部数据的场景。
- 缺点:无法对消息进行过滤,如果只关心部分消息,可能会接收到大量不需要处理的消息,增加处理负担。
- 按Tag订阅:
- 优点:可以精确控制接收到的消息,减少不必要的消息处理,提高处理效率。适用于只对特定类型消息感兴趣的场景。
- 缺点:如果业务场景中消息类型变化频繁,可能需要频繁调整订阅的Tag,增加维护成本。