无法从初始 URI 检索初始集群分区 [RedisURI [host='127.0.0.1', port=7001]]

2023-12-29

我正在开发 Lettuce 集群 Java 客户端。它设置在一个bolt拓扑(Apache Strom)。spout正在读取数据kafka并将其传递给bolt。但是,当我开始拓扑时,我收到以下错误消息并且程序终止。我错过了什么吗?是什么原因造成的?

堆栈跟踪

29502 [Thread-17-RecommendationLettuceBolt-executor[2 2]] 错误 o.a.s.util - 异步循环终止! io.lettuce.core.RedisException:无法从初始 URI 检索初始集群分区 [RedisURI [host='127.0.0.1', port=7001]] 在 io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:865) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 io.lettuce.core.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:819) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 io.lettuce.core.cluster.RedisClusterClient.connect(RedisClusterClient.java:345) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 com.projectName.indexer.lettuce.LettuceClusterClientProvider.getConnection(LettuceClusterClientProvider.java:72) ~[classes/:?] 在 com.projectName.indexer.lettuce.LettuceCacheRepopulationHandler.openLettuceConnection(LettuceCacheRepopulationHandler.java:42) ~[classes/:?] 在 com.projectName.indexer.bolts.RecommendationLettuceBolt.prepare(RecommendationLettuceBolt.java:35) ~[classes/:?] 在 org.apache.storm.daemon.executor$fn__8058$fn__8071.invoke(executor.clj:795) ~[storm-core-1.0.2.jar:1.0.2] 在 org.apache.storm.util$async_loop$fn__624.invoke(util.clj:482) [storm-core-1.0.2.jar:1.0.2] 在 clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] 在 java.base/java.lang.Thread.run(Thread.java:844) [?:?] 引起原因:io.lettuce.core.RedisConnectionException:无法在 [RedisURI [host='127.0.0.1', port=7001]] 处建立与 Redis 集群的连接 在 io.lettuce.core.cluster.topology.AsyncConnections.get(AsyncConnections.java:89) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 io.lettuce.core.cluster.topology.ClusterTopologyRefresh.loadViews(ClusterTopologyRefresh.java:73) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 io.lettuce.core.cluster.RedisClusterClient.doLoadPartitions(RedisClusterClient.java:871) ~[lettuce-core-5.1.7.RELEASE.jar:?] 在 io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:844) ~[lettuce-core-5.1.7.RELEASE.jar:?] ... 9 更多

输入代码

private void init() {
       redisUri = RedisURI.Builder
                .redis(lettuceConfig.getLettuceClusterHost())
                .withPort(lettuceConfig.getLettuceClusterPort())
                .withTimeout(Duration.ofMillis(lettuceConfig.getLettuceClusterTimeout()))
                .build();
}


public StatefulRedisClusterConnection getConnection() {
        if (connection == null || !connection.isOpen()) {
            redisClusterClient = RedisClusterClient.create(redisUri);
            final ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
                    .enablePeriodicRefresh(Duration.ofMinutes(BoltConstants.Lettuce.PERIODIC_REFRESH_TIME_IN_MIN))
                    .enableAdaptiveRefreshTrigger()
                    .build();
            final ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
                    .autoReconnect(true)
                    .topologyRefreshOptions(topologyRefreshOptions)
                    .build();
            redisClusterClient.setOptions(clusterClientOptions);
            connection = redisClusterClient.connect(SnappyCompressor.wrap(new StringCodec()));
            log.info("Connected to Redis client lettuce. lettuce connection is up and running.");
        }
        return connection;
    }

环境

compile 'io.lettuce:lettuce-core:5.1.7.RELEASE'

出现这个错误是因为我还没有安装Redis集群在我的机器本地。

我使用这些步骤解决了

https://redis.io/download https://redis.io/download并运行以下命令安装 https://redis.io/download#installation

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make //The binaries that are now compiled are available in the src directory
$ src/redis-server

使用 create-cluster 脚本创建 Redis 集群 https://redis.io/topics/cluster-tutorial

现在检查redis-5.0.5/utils/create-clusterRedis 发行版中的目录。有一个脚本叫create-cluster里面是一个简单的 bash 脚本。要启动具有 3 个主节点和 3 个从节点的 6 节点集群,只需键入以下命令:

$ create-cluster start  // start 
$ create-cluster create // create cluster

$ create-cluster stop // for stoping 
$ create-cluster clean // clean all the cluster

您将在终端中看到以下输出

$ ps aux |grep redis
300067846        28222   0.6  0.0  4379932   2612   ??  Ss    7:41PM   0:00.73 ../../src/redis-server *:30004 [cluster]                  
300067846        28227   0.5  0.0  4380956   2604   ??  Ss    7:41PM   0:00.71 ../../src/redis-server *:30006 [cluster]                  
300067846        28218   0.4  0.0  4381980   2676   ??  Ss    7:41PM   0:00.73 ../../src/redis-server *:30002 [cluster]                  
300067846        28216   0.4  0.0  4374812   2576   ??  Ss    7:41PM   0:00.50 ../../src/redis-server *:30001 [cluster]                  
300067846        28225   0.4  0.0  4380956   2632   ??  Ss    7:41PM   0:00.68 ../../src/redis-server *:30005 [cluster]                  
300067846        28220   0.3  0.0  4379932   2596   ??  Ss    7:41PM   0:00.52 ../../src/redis-server *:30003 [cluster]                  
300067846        85550   0.0  0.0  4309420   1128   ??  S     3:08PM   0:07.76 redis-server *:6379

查看所有主从节点

../redis-5.0.5/utils/create-cluster$ cat nodes-3000*.conf

您可以更新 Redis 集群配置。打开vi create-cluster并根据需要更新以下配置。

// default config are these 
CLUSTER_HOST=127.0.0.1
PORT=30000
TIMEOUT=2000
NODES=6
REPLICAS=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从初始 URI 检索初始集群分区 [RedisURI [host='127.0.0.1', port=7001]] 的相关文章

随机推荐

  • 如何使用 php 生成带有肥皂信封和正文标记的 XML

    我无法使用 Soap Envelope 和 Body Tag 生成 XMl 这是代码 rootElement XMLDoc gt createElement AddDetails rootNode XMLDoc gt appendChild
  • 如何对使用 Popen 的函数进行单元测试?

    我正在编写一个包含大量文件操作的程序 一些操作是通过调用来完成的subprocess Popen eg split l 50000 filename gzip d f filename filename 现在我想对程序的功能进行单元测试 但
  • 递归函数的产量

    我正在尝试对给定路径下的所有文件执行某些操作 我不想事先收集所有文件名然后对它们执行某些操作 所以我尝试了以下方法 import os import stat def explore p s list os listdir p for a
  • 如何进行MultiLabel分层抽样?

    我正在处理多标签数据 我想使用分层采样 假设我有 10 个类 我们将它们称为 ABCDEFGHIJ 我有一个包含 10 列的数据框 对应于每个标签 其中包含有关条目的其余信息 我可以在 n entry 10 矩阵中提取这 10 列 我将其称
  • 如何设置不同的列表选择器

    mainListView setOnItemClickListener new AdapterView OnItemClickListener Override public void onItemClick AdapterView
  • 通过 winreg 查找 perfmon 计数器 id

    我有一个通过 winreg h 中公开的 API 收集 Perfmon 计数器值的应用程序 为了收集 Perfmon 计数器值 我必须调用RegQueryValueExW传递我感兴趣的 Perfmon 计数器的 id 为了获取该 ID 我需
  • 实体属性值 (EAV) 的替代方案?

    我们的数据库是基于EAV 实体 属性 值 模型设计的 那些使用过 EAV 模型的人都知道为了灵活性而带来的所有废话 我问我的客户为什么使用EAV模型 灵活性 他们的回答是 他们的实体随着时间的推移而改变 因此 今天他们可能有一个包含一些属性
  • 在javascript中设置CSS渐变?

    所以我一直在尝试用javascript设置渐变 以便它具有鼠标悬停效果 但我没有运气 无法让它工作 这是我的javascript function mouseOVER x x backgroundImage webkit gradient
  • 将两个具有许多稀疏列的 Pandas DataFrame 合并会产生一个需要不成比例的大量内存的 DataFrame

    当合并两个稀疏数据帧时 生成的数据帧在内存中变得不成比例的大 我想知道为什么会这样 新数据帧上的操作非常慢 我尝试了不同的方法来减少内存占用 但没有成功 例如 使用不同的 fill values 0 或 0 0 在密集列和稀疏列之间来回转换
  • 如何将数据库备份文件 (.bak) 从 SQL Server 2012 还原到 SQL Server 2008 Express?

    最初来自 SQL Server 2008 的数据库已恢复到 SQL Server 2012 已制作 SQL Server 2012 的备份 我正在尝试在本地 SQL Server 2008 Express 上恢复它 但是我收到错误 指定的转
  • 视频和音频帧的PTS和DTS计算

    我正在从两个不同的线程接收视频 H264 编码数据和音频 G 711 PCM 编码数据以进行复用 写入mov多媒体容器 writer 函数签名如下 bool WriteAudio const unsigned char pEncodedDa
  • 用于计算设置表宽度的可变列宽度的算法

    我需要找出一种算法来计算列宽的优化大小 给出以下内容 表格的宽度固定为页面的大小 列内的数据将是可变的 因此列的宽度是可变的 必须优化宽度以了解何时换行以及何时不换行 因此给出以下数据 From gt 03 06 2014 To gt 03
  • 带有 Eclipse Indigo 的 gwt-maven-plugin

    我只想在 Eclipse 中设置一个新的 GWT 项目并使用 Maven 来处理所有的 jar 丛林 我使用了 gwt maven pluginthis http mojo codehaus org gwt maven plugin use
  • Python 单元测试应该位于单独的模块中吗?

    对于放置 Python 单元测试的最佳位置是否存在共识 单元测试是否应该包含在与正在测试的功能相同的模块中 当模块单独运行时执行 if name main 等 还是包含不同模块的单元测试更好 也许两种方法的组合是最好的 包括每个模块内的模块
  • 具有多个 OR 参数的 imap 搜索语法

    我正在使用 Ruby 2 5 3 和邮件 gem 2 7 1 我正在构造 IMAP 搜索命令来检索给定电子邮件地址列表和各种自日期的电子邮件 它是搜索电子邮件地址的逻辑或 我正在使用这个 email filter OR FROM email
  • 如何在requirements.txt中声明直接的github源

    我已经使用命令安装了一个库 pip install git git github com mozilla elasticutils git 它直接从 Github 存储库安装它 这工作正常 我希望在我的requirements txt 我看
  • 上传图片时获取图片名称

    当我上传图片时 h3 Img h3
  • 错误“\..此时是意外的”

    我用它创建了一个 reg 以添加Delete empty folders我的上下文菜单中的命令 当我右键单击一个文件夹时 这应该删除其空的子文件夹 我的上下文菜单中有 删除空文件夹 但是当我选择此选项时 会打开一个 cmd 窗口 并收到此错
  • NativeBase + 指数标头

    我正在使用 NativeBase 和 Exponent 标题位于手机状态栏下方 您可以在本地库 https getexponent com community native baseExponent 发布的演示 有人能解决这个问题吗 由于此
  • 无法从初始 URI 检索初始集群分区 [RedisURI [host='127.0.0.1', port=7001]]

    我正在开发 Lettuce 集群 Java 客户端 它设置在一个bolt拓扑 Apache Strom spout正在读取数据kafka并将其传递给bolt 但是 当我开始拓扑时 我收到以下错误消息并且程序终止 我错过了什么吗 是什么原因造