使用Alpakka连接器的多个使用者线程

时间:2019-05-01 10:16:03

标签: java apache-kafka akka-stream alpakka

我正在使用Alpakka kafka连接器来消耗来自kafka的数据包。我正在使用Consumer作为CommittableSource。我想在一台计算机上创建多个使用者线程,并将其用作单个源。我该如何实现?

当前,我已经使用Consumer.CommittableSource创建了多个源,并使用“合并”功能将所有源合并为一个源。但是我不确定这是否是正确的方法,因为我没有创建线程。

请在下面找到我当前正在使用的源代码:

public Source<ConsumerMessage.CommittableMessage<String, String>, Consumer.Control> source() {
Source finalSource = Source.empty();
        for (int index = 0; index < consumerConfig.getNoOfConsumers(); index++) {
            finalSource = finalSource.merge(Consumer.committableSource(consumerSettings, subscription));
        }
return finalSource;
}

1 个答案:

答案 0 :(得分:0)

是什么使您认为您需要更多的线程?您可能希望在多个流中共享一个Kafka客户客户端实例。

您不应将来自多个Consumer.committableSource的元素合并到一个流中,它不适用于批量提交。

多次运行相同的流设置是否可以满足您的需求?