如何在读取React式api时保持redis连接打开

bqujaahr  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(346)

我一直在使用springreactiveapi(使用莴苣驱动程序)收听redis流。我使用的是独立连接。似乎React堆的事件循环每次读取消息时都会打开一个新的连接,而不是保持连接打开。当我运行我的程序时,我在我的机器上看到很多等待端口。这正常吗?有没有办法让莴苣知道重新使用连接而不是每次重新连接?
这是我的密码:

StreamReceiver<String, MapRecord<String, String, String>> receiver = StreamReceiver.create(factory);
return receiver
    .receive(Consumer.from(keyCacheStreamsConfig.getConsumerGroup(), keyCacheStreamsConfig.getConsumer()),
        StreamOffset.create(keyCacheStreamsConfig.getStreamName(), ReadOffset.lastConsumed()))//
    // flatMap reads 256 messages by default and processes them in the given scheduler
    .flatMap(record -> Mono.fromCallable(() -> consumer.consume(record)).subscribeOn(Schedulers.boundedElastic()))//
    .doOnError(t -> {
      log.error("Error processing.", t);
      streamConnections.get(nodeName).setDirty(true);
    })//
    .onErrorContinue((err, elem) -> log.error("Error processing message. Continue listening."))//
    .subscribe();
7gyucuyw

7gyucuyw1#

看起来只有在stream receiver选项中将轮询超时设置为“0”并将其作为中的第二个参数传递时,spring data redis库才会重新使用连接 StreamReceiver.create(factory, options) . 通过查看springdataredis的源代码来分析。

相关问题