当前位置: 首页 > 知识库问答 >
问题:

无法获取R2DBC,该发布服务器不支持多个订阅服务器

穆阳炎
2023-03-14

我尝试使用spring-boot-starter-data-r2dbc和oracle-r2dbc运行r2dbc应用程序,但它给我一个异常“org . spring framework . Dao . dataaccessresourcefailureexception:无法获得r2dbc连接;嵌套异常为Java . lang . illegalstateexception:此发布者不支持多个订阅者。

这是我的属性文件:

spring.r2dbc.url=r2dbc:oracle:thin://localhost:1521:orcl
spring.r2dbc.username=user
spring.r2dbc.password=password

和 gradle 文件的依赖部分:

dependencies {
    ktlint 'com.pinterest:ktlint:0.41.0'
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
    implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
    implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
    implementation('org.codehaus.janino:janino')
    implementation('org.springframework.cloud:spring-cloud-starter-stream-kafka')
    implementation('org.springframework.cloud:spring-cloud-stream')
    implementation('org.springframework.boot:spring-boot-configuration-processor')
    implementation('org.apache.httpcomponents:httpclient:4.5.8')
    implementation('org.springframework.retry:spring-retry')
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation('org.springframework.boot:spring-boot-starter-data-r2dbc')
    implementation('com.oracle.database.r2dbc:oracle-r2dbc')
    implementation('com.oracle.database.jdbc:ojdbc11:21.1.0.0')
}

此处的零件代码导致错误:

message.flatMap { fromMessage ->
                Mono
                    .zip(
                        listOf(
                            dimensionAdviserRepository
                                .findFirstByEntityIdOrderByFromDateDescToDateDesc(message.adviserKey)
                                .map { it?.adviserKey ?: -1L }
                                .switchIfEmpty(Mono.just(-1L)),
                            dimensionAccountRepository
                                .findFirstByEntityIdOrderByFromDateDescToDateDesc(fromMessage.accountKey!!)
                                .map { it?.account_key ?: -1L }
                                .switchIfEmpty(Mono.just(-1L))
))}

我缺少任何配置还是这是已知的限制?

共有1个答案

法浩壤
2023-03-14

看起来,您自己在Oracle R2DBC Github回购中打开了一张罚单,在这个问题之后出现了这个问题,并得到了答案。

帮助有同样问题的人:

这是Oracle R2DBC版本0.1.0的已知限制。它已经在版本0.2.0中得到了修复,但该版本的目标是R2DBC SPI版本0.9,Spring Data R2DBC目前不支持该版本,因为它还没有正式发布。

R2DBC SPI版本0.9的GA版本计划于2021 12月06日发布,在此之后,我们可以期望Spring Data R2DBC实现对其的支持,从而可以升级Oracle R2DBC驱动程序并摆脱此限制。

编辑:根据计划,R2DBC SPI的0.9.0.RELEASE版本于昨天发布。现在只需要等待支持0.9版本R2DBCSPI的SpringDataR2DBC的新版本。

 类似资料:
  • ''组织。springframework。道。DataAccessResourceFailureException:获取R2DBC连接失败;嵌套异常为java。lang.IllegalStateException:此发布服务器不支持多个订阅服务器。位于组织。springframework。r2dbc。联系ConnectionFactoryUtils。Reactor处的lambda$getConne

  • 问题内容: 我正在尝试使用Redis Cookbook示例: 我在这里取得了成功,但从未得到“消息”。 我的客户端index.htm是这个 客户如何发布到特定的Redis“聊天”频道。 问题答案: 如果您在node.js程序中使用Redis发布/订阅功能,则应使用一个Redis客户端连接来监听某个频道,使用另一个Redis客户端连接来发送常规命令和/或将消息发布到您的频道。从node_redis文

  • 我正在使用mosquitto(http://mosquitto.org/)作为MQTT代理,并寻求关于负载平衡订阅服务器的建议(针对相同的主题)。这是如何实现的?我所读到的关于该协议的所有内容都表明,相同主题的所有订阅者都将获得一条发布消息。 这似乎效率很低,因此我正在寻找一种方法,将发布的消息以循环方式提供给连接的订阅服务器之一,以确保负载平衡状态。

  • hprose 为发布服务提供了多个方法,这些方法可以随意组合,通过这种组合,你所发布的服务将不会局限于某一个函数,某一个方法,某一个对象,而是可以将不同的函数和方法随意重新组合成一个服务。 AddFunction 方法 AddFunction(name string, function interface{}, option ...Options) Service 该方法的用于发布一个函数(命名函

  • > 糟糕的图案设计 仅在连接订阅服务器时才启动,如果没有可用的订阅服务器时停止 不成功共享数据,需要两个类(主题类和重复可观察类) 我希望避免监听器/接口来共享周围的信息,让rxjava2来完成它的工作。 经过研究,我发现有refcount()和share(),但我不确定这是否是解决这个问题的正确方法。在我的例子中,这是一个REST服务,它轮询服务器,如果至少有一个订阅服务器连接到其他地方,它应该

  • 我正在尝试使用spring-integration-kafka-2.1.0。在我公司的项目中发布。但是,由于下面列出的例外情况,它不起作用:org。springframework。信息。MessageDeliveryException:Dispatcher没有频道“org”的订户。springframework。网状物上下文WebApplicationContext:/order。“奥Kafka”