对于集成测试,我在 docker 测试容器中创建了一个 ignite 客户端,并与一个 ignite 瘦客户端连接到该容器。然后我通过调用 getOrCreateCache 创建一个测试缓存并存储对它的引用。但是,当我尝试调用 cache.put(key, value) 时,它给了我一个 ClientConnectionException 说 ignite 集群不可用错误。
我得到的 ClientConnectionException。
最后,在我的测试结束时,我有一个 @AfterClass 破坏了测试缓存。但是,该行也给了我一个 ignite cluster is available 错误。
我首先想到的问题是我的集群可能没有被激活。我试图通过尝试通过这两个代码激活集群以及在执行暂停时通过终端来解决这个问题。但是,这并没有解决我的问题。
在我尝试将值放入缓存之前,我什至打印出所有缓存,并且缓存似乎已经创建,并且当我查看调试器时似乎有对它的引用。
初始容器设置
igniteServerContainer =
new GenericContainer("apacheignite/ignite:2.5.0")
.withNetwork(network)
.withNetworkAliases("ignite")
.withExposedPorts(10800);
igniteServerContainer.start();
igniteServerContainer.execInContainer("apache-ignite-fabric/bin/control.sh", "--activate");
ignite = Ignition.startClient(
new ClientConfiguration().setAddresses(igniteServerContainer.getContainerIpAddress() + ":" + igniteServerContainer.getFirstMappedPort())
);
//Cache population
ClientCache<String, TreeSet<Item>> cache = ignite.getOrCreateCache(CACHE_NAME);
key = generateKey();
value = generateValue();
cache.put(key, value);
我遵循了在线示例,它应该正常填充缓存,但我只是得到 ClientConnectionExceptions 说集群不可用,我非常不确定为什么它在能够连接到 ignite 容器然后创建缓存之后给我一般。