Hazelcast должен быть подключен как клиент в существующем кластере вместо члена - PullRequest
0 голосов
/ 30 мая 2018

Изменения, которые я сделал на стороне сервера:

@Bean(name = {"hazelcast"})
public HazelcastInstance hazelcastInstance() {
    ClientConfig clientConfig = new ClientConfig();
    clientConfig.getGroupConfig().setName(integrationSettings.getHazelcastClusterGroupName())
        .setPassword(integrationSettings.getHazelcastClusterGroupPass());

    final ClientNetworkConfig clientNetworkConfig = new ClientNetworkConfig();
    clientNetworkConfig.addAddress("127.0.0.1:6701");
    clientConfig.setNetworkConfig(clientNetworkConfig);
    clientConfig.setInstanceName("INTEGRATION_INSTANCE");
    final String hazelcastEnterpriseLicenseKey = null;
    if (hazelcastEnterpriseLicenseKey != null) {
        clientConfig.setLicenseKey(hazelcastEnterpriseLicenseKey);
    }

    return HazelcastClient.newHazelcastClient(clientConfig);
}

Я получу имя группы и пароль из файла свойств.

Мой код на стороне клиента:

    ClientConfig clientConfig = new ClientConfig();            

 clientConfig.getGroupConfig().setName(hazelcastGroupName).setPassword(hazelcastGroupPwd);
    clientConfig.getNetworkConfig().addAddress(serverAddress);
    hazelcastInstance = HazelcastClient.newHazelcastClient(clientConfig);

Мой журнал ошибок:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.hazelcast.core.HazelcastInstance]: Factory method 'hazelcastInstance' threw exception; nested exception is java.lang.IllegalStateException: Unable to connect to any address in the config! The following addresses were tried: [[127.0.0.1]:6701]
            at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
            at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
            ... 37 more
        Caused by: java.lang.IllegalStateException: Unable to connect to any address in the config! The following addresses were tried: [[127.0.0.1]:6701]
            at com.hazelcast.client.spi.impl.ClusterListenerSupport.connectToCluster(ClusterListenerSupport.java:178)
            at com.hazelcast.client.spi.impl.ClientClusterServiceImpl.start(ClientClusterServiceImpl.java:189)
            at com.hazelcast.client.impl.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:404)
            at com.hazelcast.client.HazelcastClientManager.newHazelcastClient(HazelcastClientManager.java:78)
            at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:72)
            at com.zafin.zrpe.integration.config.ZrpeIntegrationConfiguration.hazelcastInstance(ZrpeIntegrationConfiguration.java:85)
            at com.zafin.zrpe.integration.config.ZrpeIntegrationConfiguration$$EnhancerBySpringCGLIB$$7af6798e.CGLIB$hazelcastInstance$6(<generated>)
            at com.zafin.zrpe.integration.config.ZrpeIntegrationConfiguration$$EnhancerBySpringCGLIB$$7af6798e$$FastClassBySpringCGLIB$$25f010cb.invoke(<generated>)
            at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
            at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)
            at com.zafin.zrpe.integration.config.ZrpeIntegrationConfiguration$$EnhancerBySpringCGLIB$$7af6798e.hazelcastInstance(<generated>)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
            ... 38 more

Мне нужно подключить свой Hazelcast в качестве клиента, но это исключение бина вызывает сбой развертываний.Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 31 мая 2018

Глядя на свой код, вы создаете «Hazelcast-Client» на стороне сервера и на стороне клиента.В коде на стороне сервера создайте экземпляр ServerMember hazelcast, передав объект «Config», а не «ClientConfig», например

@Bean
public HazelcastInstance hazelcastInstance() throws Exception {

    Config cfg = new Config();
    ...
    ...
    HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
    return instance;
}

Hazelcast-клиент может подключаться к Hazelcast ServerMember.Также необходимо убедиться, что ServerMember запущен до того, как клиент сможет подключиться к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...