在React性场景中,什么应该更好:reactor kafka或kafka listener

nzrxty8p  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(386)

我有这样一个场景在挑战我:Kafka主题和消息,我必须通过sse消费和公开给一个网络组件。我已经在各个层面做了几次尝试,寻找一个稳定和更可靠的方法,或者至少是一些我填充的更容易支持的方法。
现在,我创建了一个非常简单的Kafka主题,创建了两个不同的消费者,两者的工作方式似乎都非常相同。一种是使用org.springframework.kafka.annotation.kafkalistener和其他reactor.kafka.receiver.kafkareceiver。
最终的目标是通过springwebflux公开一个事件,当消费者从主题中获取信息时发布消息。
如果我没有错的话,我在那个Spring读到过一些东西…Kafka利斯泰纳是封锁代码,但据我所知不是。它只是一个听者,被精确地触发为React堆…Kafka接收器。既然我是在编写一个非阻塞代码,我应该避免阻塞代码,但我不能在任何地方跳出Kafka利特纳阻塞。
以下是产生完全相同结果的基本比较:
React堆Kafka接收器:

ReceiverOptions<Object, Object> consumerOptions = ReceiverOptions.create(consumerProps)
        .subscription(Collections.singleton("test"))
        .addAssignListener(partitions -> logger.debug("onPartitionsAssigned {}", partitions))
        .addRevokeListener(partitions -> logger.debug("onPartitionsRevoked {}", partitions));

kafkaReceiver = KafkaReceiver.create(consumerOptions);

((Flux<ReceiverRecord>) kafkaReceiver.receive()).doOnNext(r -> {
    logger.info(String.format("Consumed Message using KafkaListener -> %s", r.value()));
    r.receiverOffset().acknowledge();
}).subscribe();

Spring Kafka听众:

@KafkaListener(topics = "test")
public void consume(String message) {
    logger.info(String.format("Consumed Message using KafkaListener -> %s", message));
}

如果要复制比较:

1 - clone https://github.com/jimisdrpc/simplest-comparison-kafkaconsumer
2 - create default Kafka topic name test
3 - produce any message to such topic
4 - enable either Reactor Kafka and run again after enable Kafka Listener (I didn't find how make both work in same application at same moment but let's say it isn't that important now)

附:我不是在问哪个更好。我试图比较一个非常具体的场景(旨在通过springwebflux为webcomponent生成事件的React式编程),并试图保证我不会选择一个可能会以某种方式阻塞代码的场景。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题