Hazelcast客户端连接端口

时间:2017-09-13 07:01:21

标签: hazelcast

我有一个多服务部署,其中一些服务使用Hazelcast进行缓存。在实际部署中,服务驻留在单独的VM中,hazelcast实例在端口5701上启动。但是,在本地执行测试时,所有服务都驻留在同一VM上。这意味着第一个Hazelcast实例在5701上启动,第二个在5702上启动,依此类推(在配置中将自动增量设置为true)。

问题是hazelcast客户端尝试连接到5701到5703并且不再搜索。

为了确保端口没有任何重叠(因此没有自动增量),我手动配置了Hazelcast实例的端口。因此,对于其中一个服务,我将其设置为5710.但是,客户端尝试从5701连接。

我已经读过网络>端口不能用于Hazelcast客户端配置,但是我找不到如何指定尝试连接的端口?

我正在使用Hazelcast 3.6

配置文件:

    <group>
        <name>myNode</name>
        <password>MyPass</password>
    </group>
    <properties>
        <property name="hazelcast.rest.enabled">true</property>
        <property name="hazelcast.shutdownhook.enabled">false</property>
    </properties>
    <management-center enabled="false"/>
    <network>
        <port auto-increment="true">5701</port>
        <join>
            <multicast enabled="true"/>
            <tcp-ip enabled="false"/>
            <aws enabled="false"/>
        </join>
    </network>

3 个答案:

答案 0 :(得分:0)

您只需将地址(ip:port)传递给客户端的连接配置即可。无论如何,我想知道你在一台机器上启动这么多独立集群成员(不同集群?)的工作。

答案 1 :(得分:0)

解决方案是将群集配置添加到客户端配置xml:

Auto Comment Blocks

答案 2 :(得分:0)

对于hazelcast 4及更高版本,您可以使用以下

ClientConfig

 config.getNetworkConfig()
              .addAddress(HazelcastProperties.getAddress())
              .setRedoOperation(true)
              .setSmartRouting(true);

        config.setClusterName(HazelcastProperties.getGroupName());
        config.setInstanceName(HazelcastProperties.getInstanceName());


String address = HazelcastProperties.getAddress();
        if (address.contains(":"))
        {
            String port = address.substring(address.indexOf(":" + 1));
            config.getNetworkConfig()
                  .addOutboundPort(Integer.parseInt(port));
        }
    else
        {
            config.getNetworkConfig()
                  .addOutboundPort(5701);
        }

参考:https://docs.hazelcast.org/docs/4.0/manual/html-single/index.html#port

相关问题