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

在Spring boot 2.3. x中使用Jedis 3.6.0时不支持流

陈霄
2023-03-14

今天,当我想用绝地消耗能量流时,抛出以下错误:

java.lang.UnsupportedOperationException: Streams not supported using Jedis!
    at org.springframework.data.redis.connection.jedis.JedisConnection.streamCommands(JedisConnection.java:154) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.connection.DefaultedRedisConnection.xReadGroup(DefaultedRedisConnection.java:591) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.DefaultStreamOperations$4.inRedis(DefaultStreamOperations.java:310) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.DefaultStreamOperations$RecordDeserializingRedisCallback.doInRedis(DefaultStreamOperations.java:376) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.DefaultStreamOperations$RecordDeserializingRedisCallback.doInRedis(DefaultStreamOperations.java:371) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:228) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:188) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:96) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.core.DefaultStreamOperations.read(DefaultStreamOperations.java:305) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.stream.DefaultStreamMessageListenerContainer.lambda$getReadFunction$3(DefaultStreamMessageListenerContainer.java:236) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.stream.StreamPollTask.doLoop(StreamPollTask.java:138) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at org.springframework.data.redis.stream.StreamPollTask.run(StreamPollTask.java:123) ~[spring-data-redis-2.3.9.RELEASE.jar:2.3.9.RELEASE]
    at misc.config.async.pool.MdcTaskDecorator.lambda$decorate$0(MdcTaskDecorator.java:29) ~[classes/:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

我已经搜索了我知道Jedis支持Redis流的文档。为什么这还告诉我不支持Redis Stream?这是我在Gradle中定义的依赖项,这段代码强制使用3.6.0版本的Jedis:

resolutionStrategy {
            eachDependency { DependencyResolveDetails details ->
              
                if (details.requested.group == 'redis.clients') {
                    details.useVersion "3.6.0"
                }
                
            }
        }

这段代码输入绝地武士:

api ("org.springframework.boot:spring-boot-starter-data-redis") {
            exclude group: "io.lettuce", module: "lettuce-core"
            exclude group: "redis.clients", module: "jedis"
        }
        api "redis.clients:jedis:3.6.0"

我应该怎么做才能避免这个问题?我尝试了这种方式来升级我的Spring数据版本,如下所示:

api ("org.springframework.boot:spring-boot-starter-data-redis") {
            exclude group: "io.lettuce", module: "lettuce-core"
            exclude group: "org.springframework.data", module: "spring-data-redis"
        }
        api "org.springframework.data:spring-data-redis:2.5.0"

似乎会导致其他兼容问题。现在我正在使用2.3.10。RELEASE已经是Spring boo2.3. x的最新版本。我应该升级到2.4. x吗?如果我升级到Spring boo2.4. x,就没有兼容的稳定Spring Cloud版本可以匹配。

共有2个答案

弘涛
2023-03-14

如果不想升级spring版本,请尝试将spring data redis升级到2.5.0版本,步骤1:不要使用默认的spring数据

api ("org.springframework.boot:spring-boot-starter-data-redis") {
            exclude group: "io.lettuce", module: "lettuce-core"
            exclude group: "org.springframework.data", module: "spring-data-redis"
        }

第2步:导入我们想要的jar版本:

api "org.springframework.data:spring-data-redis:2.5.0"
        api "redis.clients:jedis:3.6.0"

第3步:强制使用新版jar:

 resolutionStrategy {
            eachDependency { DependencyResolveDetails details ->
                if (details.requested.group == 'org.springframework.data' && details.requested.name == 'spring-data-redis' ) {
                    
                    details.useVersion("2.5.0")
                }
            }
        }
谈桐
2023-03-14

您正在使用spring-data-redis2.3.9

只有在2.5.0中才能获得对绝地流的支持。因此,您必须至少使用spring data redis的2.5.0版本。

 类似资料:
  • 问题内容: 我是Spring-Batch(和一般的Spring)的新手,并且一直在关注在线文档,以教自己如何完成此任务。我正在尝试连接到DB2数据库。 如果我这样声明XML的DB2连接: 然后将其加载到我的代码中,如下所示: 完美运作。如示例所示,我想如何使用DataSourceBuilder,所以最终我想去: 但是由于某种原因,它不起作用。我懂了 原因:java.lang.IllegalStat

  • 问题内容: 我很难在Mac上正常使用命令“ pg_connect()”。我目前正在编写一个PHP脚本(将从控制台执行)以读取PostgreSQL数据库并通过电子邮件发送报告。 我已经进入文件并添加了 但是,我遇到了以下错误。 PHP警告:PHP启动:无法加载动态库’/usr/lib/php/extensions/no-debug-non- zts-20090626/php_pgsql.so’-dl

  • TF版本:最新母版,b083cea 下面是一个使用TF2的简单示例。0急切模式,它使用MirroredStrategy成功运行,但参数ServerStrategy出错。 我可以用TF2。0即时模式支持参数服务器策略现在?到目前为止,我还没有找到一个成功的例子:( 错误消息

  • 我正在尝试使用Java JTDS驱动程序连接到Scala中的数据库。然而,每当我尝试使用它时,我会得到一个错误,即(Java的?)是错的。 java.lang.unsupportedClassVersionError:net/sourceforge/jtds/jdbcx/jtdsDataSource:Unsupported major.minor版本51.0 null java版本“1.6.0_3

  • 问题内容: 我想知道是否可以在没有支持库的情况下使用FragmentStatePagerAdapter类或其等效类? 我知道如何使用本机片段代替支持库中的本机片段,许多其他类也具有类似的等效项,但是我找不到代替该类的内容。 我基本上想扩展它以便在我的适配器中使用,就像这样 问题答案: 我想您已经阅读了 docs,但以防万一: 该课程目前正在早期设计和开发中。该API可能会在以后的兼容性库更新中更改

  • 问题内容: 我有一个使用restify模块创建的REST api,我想允许跨域资源共享。最好的方法是什么? 问题答案: 您必须将服务器设置为设置跨源标头。不知道是否有内置的使用功能,所以我写了自己的功能。 我是从本教程中找到的。http://backbonetutorials.com/nodejs-restify-mongodb- mongoose/