Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Quarkus在卡夫卡的同一主题中设置多个使用者_Java_Apache Kafka_Reactive Programming_Kafka Consumer Api_Quarkus - Fatal编程技术网

Java 如何使用Quarkus在卡夫卡的同一主题中设置多个使用者

Java 如何使用Quarkus在卡夫卡的同一主题中设置多个使用者,java,apache-kafka,reactive-programming,kafka-consumer-api,quarkus,Java,Apache Kafka,Reactive Programming,Kafka Consumer Api,Quarkus,我正在使用Quarkus框架构建一个Kafka使用者,它将阅读一个包含3个分区的主题。下面的代码片段正在运行,但根据日志,我只是启动了一个消费者,其中有3个分区。我现在的问题是,在运行应用程序后,如何生成3个消费者 @Incoming("topic-1") public CompletionStage<Void> onMessage(KafkaRecord<String, String> message) throws IOException { LOG.inf

我正在使用Quarkus框架构建一个Kafka使用者,它将阅读一个包含3个分区的主题。下面的代码片段正在运行,但根据日志,我只是启动了一个消费者,其中有3个分区。我现在的问题是,在运行应用程序后,如何生成3个消费者

@Incoming("topic-1")
public CompletionStage<Void> onMessage(KafkaRecord<String, String> message) throws IOException {

    LOG.info("Kafka order message with value = {} arrived from topic {} ", message.getPayload(),
            message.getTopic());

    //JsonObject event = new JsonObject(message.getPayload());

    try {
        if (true) {
            LOG.info("Kafka message: " + message);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return message.ack();
}
@传入(“主题1”)
public CompletionStage onMessage(KafkaRecord消息)引发IOException{
LOG.info(“值为{}的Kafka订单消息从主题{}到达”,message.getPayload(),
message.getTopic());
//JsonObject事件=新的JsonObject(message.getPayload());
试一试{
如果(真){
LOG.info(“卡夫卡消息:”+消息);
}
}捕获(例外e){
e、 printStackTrace();
}
返回message.ack();
}
请参阅示例日志:

信息[org.apa.kaf.cli.con.int.ConsumerCoordinator](vert.x-kafka-consumer-thread-0)[consumer clientId=testconsumer,groupId=kafka detection consumer]在第64代完成了组的分配:{testconsumer-bf6d314c-44e1-47b1-9439-fe4058951841=分配(分区=[test_part-0,test_part-1,test_part-2])


如果您在containers平台(Docker,K8S…)上运行应用程序,那么您可以水平扩展您的服务;否则,请使用不同的端口再次运行应用程序


当Kafka客户端启动时,它将被分配到某个分区,因此同一个客户端不能使用多个主题分区。

如果您在containers平台(Docker,K8S…)上运行应用程序,那么您可以水平扩展服务;否则,请使用不同的端口再次运行应用程序


当Kafka客户端启动时,它将被分配到某个分区,因此,同一个客户端不能从多个主题分区消费。

这可能是一个选项,但我希望在服务中增加线程或其他选项,我可以在服务中编写代码。我没有尝试过,但可能您可以配置指向同一Kafka主题的其他频道名称,并创建两个方法,使用相同的代码但不同的频道名称,我相信这应该可以。谢谢!这是我的最后一个选项,但它会有一个脏代码-我正在寻找动态配置,并将根据该配置生成线程/使用者。还要确保所有使用者使用相同的consumer-group-id。这可能是一个选项,但我希望在服务中增加可能的线程或其他选项,我可以在服务。我没有尝试过,但也许你可以配置另一个指向同一卡夫卡主题的频道名称,并创建两个具有相同代码但不同频道名称的方法,我相信这应该可以。谢谢!这是我的最后一个选项,但它会有一个脏代码-我正在寻找动态配置,并将基于该配置生成线程/使用者。还要确保所有使用者使用相同的consumer-group-id。