You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarkus中启动多个消息消费者以实现多核性能扩展?

Quarkus Kafka/AMQP消费者多核扩展方案

Quarkus完全支持和Vert.x多Verticle部署等价的垂直扩展能力,来最大化多核CPU利用率,且提供了更简洁的原生配置方式,不需要手动管理Verticle生命周期。

方案1:使用SmallRye Reactive Messaging原生配置(推荐)

Quarkus默认集成的SmallRye Reactive Messaging组件内置了消费者并发配置,不需要写代码即可调整消费实例数:

  • Kafka消费者配置:在application.properties中添加对应消费通道的配置项
    # 替换<your-channel-name>为你定义的消息消费通道名称
    mp.messaging.incoming.<your-channel-name>.consumer-count=10
    
    配置后Quarkus会自动启动10个独立的Kafka消费者实例,每个实例绑定不同的Vert.x事件循环线程,自动利用多核CPU性能。注意:消费者数量不要超过对应Kafka Topic的总分区数,超出的消费者会处于空闲状态浪费资源
  • AMQP消费者配置:同理调整对应通道的并发参数即可
    mp.messaging.incoming.<your-channel-name>.concurrency=10
    

方案2:兼容原有Vert.x Verticle部署逻辑

如果你希望复用原来Vert.x的Verticle消费逻辑,Quarkus也完全兼容原有部署方式:
注入io.vertx.core.Vertx实例后,调用部署方法时指定实例数即可,和原生Vert.x的用法完全一致,示例代码:

@Inject
Vertx vertx;

public void deployConsumers() {
    DeploymentOptions options = new DeploymentOptions().setInstances(10);
    vertx.deployVerticle(YourConsumerVerticle.class.getName(), options);
}

部署的10个Verticle会自动分配到不同的事件循环线程上,达到和原生Vert.x完全一致的多核利用效果。

补充性能调优建议

Quarkus默认的Vert.x事件循环线程数和CPU核心数绑定,如果你的消费者实例数较多,可以手动调整事件循环池大小匹配需求:

quarkus.vertx.event-loops-pool-size=10

内容的提问来源于stack exchange,提问作者Charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:48:02