我有一个 spring-boot 微服务使用 hazelcast、hazelcast-client 和 hazelcast-spring 3.6 版本连接到 hazelcast。我能够在 java 8 上连接,但是一旦迁移到 java 17 并且没有其他代码更改就开始出现错误:thread="hz.client_0_obj-cartmap.cluster-listener" category="com.hazelcast.client.spi.ClientClusterService “无法获得活跃的集群连接,在 8128 毫秒后尝试,尝试 1000 次中的 1 次。Cluser 看起来不错,在 http://obj1.cartmp.intqa102.syseng.tmcs:5701/hazelcast/rest/cluster
上得到响应
private static final Logger log = LoggerFactory.getLogger(CartMappingHazelcastConfig.class);
@Value("${cart.mapping.cache.local.instanceName}")
private String localInstanceName;
@Value("${cart.mapping.cache.common.groupName}")
private String groupName;
@Autowired
HazelcastConfigProperties hazelcastConfigProperties;
@Bean
public CartIdBuilderFactory cartIdBuilderFactory() {
return new CartIdBuilderFactory(this.localInstanceName);
}
@Bean
public Serializer cartMappingSerializer() {
return new CartMappingKryoSerializer();
}
@Bean
public Map<String, ClientConfig> hazelCastClientConfigs() {
Map<String, ClientConfig> clientConfigsMap = new HashMap<>();
hazelcastConfigProperties.getConfigs().stream()
.forEach(cacheProperties -> {
clientConfigsMap.put(cacheProperties.getName(), makeClientConfig(cacheProperties));
});
return clientConfigsMap;
}
@Bean
public Map<String, HazelcastInstance> hazelCastInstances() {
return this.hazelCastClientConfigs().keySet()
.stream()
.collect(Collectors.toMap(k->k, k -> HazelcastClient.newHazelcastClient(hazelCastClientConfigs().get(k))));
}
@Bean
public Map<String, CacheManager> registeredCacheManagers() {
return this.hazelCastInstances().keySet()
.stream()
.collect(Collectors.toMap(k->k, k -> new HazelcastCacheManager(this.hazelCastInstances().get(k))));
}
@Bean
public CartMappingCacheManager cartMappingCacheManager() {
return new HazelcastCartCacheManager(this.registeredCacheManagers(), this.localInstanceName, CartContentsProvider.COMMERCE_API_PROVIDER_ID, cartIdBuilderFactory());
}
private ClientConfig makeClientConfig(CacheConfigProperty cacheConfigProperty) {
ClientConfig config = new ClientConfig();
config.getGroupConfig().setName("obj-cartmap").setPassword(cacheConfigProperty.getPassword());
config.getNetworkConfig()
.setConnectionAttemptLimit(1000)
.setSmartRouting(true)
.setRedoOperation(true)
.setConnectionTimeout(5000)
.setConnectionAttemptPeriod(10000);
config.getNetworkConfig().addAddress("obj1.cartmp.intqa102.syseng.tmcs");
config.getSerializationConfig()
.addSerializerConfig(new SerializerConfig()
.setTypeClass(CartMapping.class)
.setImplementation(cartMappingSerializer()));
return config;
}```
Any suggestion?