Apache RocketMQ 是否有针对 Topic和Group级别限流 功能,在哪里可以看到?[阿里云消息队列MQ]

问题1:Apache RocketMQ 是否有针对 Topic和Group级别限流 功能,在哪里可以看到;只到找到针对instnce级别 的峰值上限? 问题2:canal + rocketmq 多个canal 写入rocketmq,rocketmq实例的写入上限时3Ktps,每个canal 平时值比较稳定,但峰值可能是平时tps的10倍以上,超过实例上限 如果某一个canal的写入超过实例上限,触发broker流控,会不会影响其他producer的写入(触发其他生产者退避逻辑,包括顺序和非顺序的写入)?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 问题1:Apache RocketMQ提供了Topic和Group级别的限流功能。您可以在RocketMQ的Broker配置文件中,通过设置topic或group的属性来实现限流。具体来说,您可以设置以下属性:

    maxMsgSize:设置消息的最大大小,超过该大小的消息将被拒绝。 sendMsgThreadPoolNums:设置发送消息的线程池大小,限制发送消息的并发数。 sendThreadPoolQueueCapacity:设置发送消息的线程池队列大小,限制发送消息的并发数。 您可以在RocketMQ的官方文档中查看更多关于Broker配置的信息。

    问题2:如果某一个canal的写入超过实例上限,会触发broker的流控机制,限制该canal的写入速度,但不会影响其他producer的写入。其他producer仍然可以正常写入消息,但可能会受到一定的影响。如果您的应用程序对消息的时效性要求比较高,建议您在发送消息时设置消息的过期时间,以避免消息因为流控被延迟发送。

  2. 是的,Apache RocketMQ提供了基于Topic和Group的限流功能。您可以在RocketMQ的配置文件中设置这些限流参数。具体而言,可以通过设置defaultTopicQueueNums参数来控制每个Topic的队列数量,从而限制消息的并发处理能力;通过设置consumeMessageBatchMaxSize参数来控制每个消费者Group在一次拉取中最多拉取的消息数量,从而控制消费者的消费速率。

    您可以在RocketMQ的官方文档中查看这些参数的详细说明。例如,关于defaultTopicQueueNums参数的说明可以在官方文档的这个页面中找到;关于consumeMessageBatchMaxSize参数的说明可以在这个页面中找到。