Hazelcast 客户端连接端口

Hazelcast client conneciton port

我有一个多服务部署,其中一些服务使用 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>

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

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

   <network>
        <cluster-members>
            <address>127.0.0.1:57xx</address>
        </cluster-members>
    </network>

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

客户端配置

 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