吞吐量优先的场景

一些方案会加大消息丢失的概率,根据情况使用。

在 Broker 端进行消息过滤

消息的Tag

对一个应用来说,尽可能只用一个 Topic,不同的消息子类型用 Tag来标识。服务器端基于 Tag 进行过滤,并不需要读取消息体 的内容,所以效率很高 。

消息的Key

对发送的消息设置好 Key,以后可以根据这个 Key 来 查找消息 。

注:

Tag用在 Consumer的代码中,用 来进行服务端消息过滤, Key 主要用于通过命令行查询消息 。

提高 Consumer 处理能力

提高消费并行度

在同一个 ConsumerGroup 下( Clustering 方式),可以通过增加 Consumer 实例的数量来提高并行度,通过加机器,或者在 已有机器中启动 多个 Consumer 进程都可以增加 Consumer实例数。注意总的 Consumer数量不要超过 Topic下 Read Queue 数量,超过的 Consumer 实例接收不到消息 。 此外,通过提高单个 Consumer 实例中的并行处理的线程数 可以在同一个 Consumer 内增加并行度 来提高吞吐量(设置方法是修改 consumeThreadMin 和 consumeThreadMax)。

以批量方式进行消费

设置 Consumer 的 consumeMessageBatchMaxSize 这个参数 ,默 认是 1,如果设置为 N,在消息多的时候每次收到的是个长度为 N的消息链表。

检测延时情况,跳过非重要消息

提高 Producer 的发送速度

Oneway方式

Oneway 方式只发送请求不等待应,适合日志收集类场景。

增加 Producer 的并发量

顺序刷盘,因此效率不会有影响。

Last updated

Was this helpful?