我正在研究Lettuce集群Java客户端。它是在bolt
拓扑(Apache Strom)中设置的。spout
正在从kafka
读取数据并将其传递给bolt
。然而,当我启动我的拓扑时,我会收到以下错误消息和程序终止。我是不是漏掉了什么?这是什么原因造成的?
29502[Thread-17-RecommendationLetTuceBolt-Executor[2 2]]错误O.A.S.Util-异步循环已死亡!io.lettuce.core.redisException:无法从io.lettuce.core.cluster.redisclusterClient.LoadPartitions(redisclusterClient.java:865)~[lettuce-core-5.1.7.release.jar:?]的初始URI[RedisURI[host='127.0.0.1',port=7001]]检索初始群集分区在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:无法建立到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并运行以下命令安装
$ 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集群
现在检查Redis发行版中的redis-5.0.5/utils/create-cluster
目录。里面有一个名为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
我很担心,因为我在启动Hazelcast实例后会得到以下跟踪日志: 使用最新版本的Hazelcast 3.7进行测试,但使用3.6进行测试,并在多播环境中使用默认的Hazelcast配置 到底是什么意思?这是有问题的征兆? 谢谢你
我有一个使用MIP SDK的Azure函数,当调用< code>MIP时,我得到以下错误。CreateMipContext(...): 令人惊讶的是,该错误仅在 Azure 上运行时发生。在本地运行时,一切都很好。 我正在使用MIP SDK v1.8.86和.NET Core 3.1。 知道OneDS是什么或者是什么导致了错误吗?
新CONF:我做了一些改变来配合你所说的。现在我删除了hibernate-cfg.xml并在spring-servlet.xml中做了所有的conf: 它可能来自我的java文件吗? 错误是: Bean 类 [org.springframework.orm.hibernate4.LocalSessionFactoryBean] 的属性 'transaction' 无效:Bean 属性 'trans
我有一个应用程序,我正在扩展它以提供REST API。在主站点中一切正常,但当我尝试访问REST API时,我在异常日志中得到以下内容: 禁用延迟加载将解决此问题,但会导致不可接受的性能(加载时间从 200 毫秒到 22 秒)。我不知道如何处理这个问题。 我刚开始在ColdFusion中Rest,在我看来,CFC正在以一种不寻常的方式被处理。它们似乎没有被初始化(init方法似乎没有运行),现在看
初始化检出 大多数时候,你会使用checkout从版本库取出一个新拷贝开始使用Subversion,这样会在本机创建一个项目的“本地拷贝”,这个拷贝包括了命令行指定版本库中的HEAD(最新的)版本: $ svn checkout http://svn.collab.net/repos/svn/trunk A trunk/Makefile.in A trunk/ac-helpers A
本文介绍如何对 Kubernetes 上的集群进行初始化配置完成初始化账号和密码设置,以及批量自动执行 SQL 语句对数据库进行初始化。 注意: 如果 TiDB 集群创建完以后手动修改过 root 用户的密码,初始化会失败。 以下功能只在 TiDB 集群创建后第一次执行起作用,执行完以后再修改不会生效。 配置 TidbInitializer 请参考 TidbInitializer 示例和 API