实际上 ConsumeFromWhere 的枚举类源码中还有另外三个值,但是已经被弃用了。但是这个配置仅对新的 ConsumerGroup 有效,已经存在的 ConsumerGroup 会继续按照上次消费到的 Offset 继续消费。
其实也很好理解,假设有 1000 条消息,你的服务已经消费到了 500 条了,然后你上线新的东西将服务重新启动,然后又从头开始消费了?这不扯吗?
这里我们传的是 *,代表订阅所有类别的消息。当然我们也可以传入 tagA || tagB || tagC 这种,代表我们只消费打了这三种 Tag 的消息。
RocketMQ 会根据我们传入的这两个参数,构造出 SubscriptionData ,放入一个位于内存的 ConcurrentHashMap 中维护起来,简单来说就一句话,把这个订阅的 Topic 缓存下来。
在缓存完之后会进行一个比较关键的操作,那就是开始向所有的 Broker 发送心跳。Consumer 客户端会将:
相似问题