gpt4 book ai didi

java - MongoDB 响应式(Reactive)无法发送完整信号

转载 作者:行者123 更新时间:2023-12-02 10:54:28 25 4
gpt4 key购买 nike

我正在使用 spring webflux + mongodb。当合并多个通量的更复杂的方法返回时,我遇到了通量永远无法完成的问题(http 客户端陷入等待)。

在尝试重现时,似乎存在以下问题:

someRepository.findAll().subscribe([etc...]);尽管数据库中有 15228 个实体,但始终发出恰好 3855 个实体。未播放完整信号。当使用 coreSubscriber 时,订阅者将在 gc 运行时被垃圾收集,这意味着基本上没有任何东西仍在排队。

有人知道此问题的原因和/或解决方法吗?

(测试在 spring-boot-starter-data-mongodb-reactive 2.0.0.RELEASE、2.0.3.RELEASE 和 2.0.4.RELEASE 版本中 100% 发生,假设发生在中间的版本也是如此。Mongo 版本:4.0.0)

编辑:相关代码:

public interface LocationRepository extends ReactiveMongoRepository<Location, String> {}

locationRepository.findAll().subscribe(result -> log.info("RESULT "+result), error -> log.info("ERROR"+error),() -> log.info("DONE"));

最佳答案

后来证明这是驱动程序中的死锁。可以通过配置mongo时使用AsynchronousSocketChannelStreamFactoryFactory来解决

关于java - MongoDB 响应式(Reactive)无法发送完整信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51876049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com