使用分布式执行器服务执行任务时发生TargetNotMemberException-hazelcast

使用分布式执行器服务执行任务时发生TargetNotMemberException-hazelcast,hazelcast,Hazelcast,我正在尝试使用hazelcast 3.1的分布式执行器服务,发现我无法使用submitToMember(任务,member)。在我下面的示例中,10.69.108.60是我的本地机器,170.194.100.111是我的远程机器。当成员是我的本地机器时,我可以在将来获得返回值,但如果成员是远程机器,则会给我一个targetNotMemberException。 下面是代码 public class DistExecutionTest { public static void main(

我正在尝试使用hazelcast 3.1的分布式执行器服务,发现我无法使用submitToMember(任务,member)。在我下面的示例中,10.69.108.60是我的本地机器,170.194.100.111是我的远程机器。当成员是我的本地机器时,我可以在将来获得返回值,但如果成员是远程机器,则会给我一个targetNotMemberException。 下面是代码

public class DistExecutionTest {

    public static void main(String args[]){
        DistributedExecutor dex = new DistributedExecutor();

        try {
            Member member = new MemberImpl(new Address("170.194.100.111",5701), false );

            String msg;
                msg = dex.echoOnTheMember("Hey youuuu!", member);

            System.out.println(msg);
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }


    }
}

远程计算机上的日志记录在这些行上。无法粘贴所有日志记录。已成功获取重要部分

   INFO: [10.69.108.60]:5701 [dev] Connecting to possible member: Address[10.38.148.60]:5703
    Dec 17, 2013 1:03:21 PM com.hazelcast.cluster.TcpIpJoiner
    INFO: [10.69.108.60]:5701 [dev] Connecting to possible member: Address[10.38.148.60]:5702
    Dec 17, 2013 1:03:21 PM com.hazelcast.cluster.TcpIpJoiner
    INFO: [10.69.108.60]:5701 [dev] Connecting to possible member: Address[10.38.148.60]:5701
    Dec 17, 2013 1:03:21 PM com.hazelcast.cluster.TcpIpJoiner
INFO: [10.69.108.60]:5701 [dev] Connecting to possible member: Address[170.194.100.111]:5703
    Dec 17, 2013 1:03:21 PM com.hazelcast.cluster.TcpIpJoiner
    INFO: [10.69.108.60]:5701 [dev] Connecting to possible member: Address[170.194.100.111]:5702
    Dec 17, 2013 1:03:21 PM com.hazelcast.nio.SocketConnector

    Members [2] {
        Member [10.69.108.60]:5701 this
        Member [170.194.100.111]:5701
    }

您是否可以使用hz.getCluster().getMembers()方法获取成员实例并选择要发送到的成员实例,而不是直接创建成员实例?我想知道这是否是由于您创建该成员的方式造成的。

我无法设置注释中的文本格式,因此我将给出另一个答案

因此,您所面临的问题是,为什么您的成员没有形成集群

您应该看到如下日志记录:

Members [2] {
    Member [192.168.1.104]:5701 this
    Member [192.168.1.104]:5702
}
这就是为什么我需要更多的日志记录,只是你的stacktrace,但目前没有提供任何更多的价值。我需要看看Hazelcast对加入其他集群的看法

我需要看到这样的东西:

Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
INFO: Looking for hazelcast.xml config file in classpath.
Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
WARNING: Could not find hazelcast.xml in classpath.
Hazelcast will use hazelcast-default.xml config file in jar.
Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
INFO: Using configuration file     /java/projects/Hazelcast/hazelcast/hazelcast/target/classes/hazelcast-default.xml in the classpath.
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.DefaultAddressPicker
INFO: Prefer IPv4 stack is true.
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.DefaultAddressPicker
INFO: Picked Address[192.168.1.102]:5701, using socket         ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
Dec 17, 2013 7:24:13 PM com.hazelcast.system
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Hazelcast Community Edition 3.2-SNAPSHOT (20131217) starting at Address[192.168.1.102]:5701
Dec 17, 2013 7:24:13 PM com.hazelcast.system
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Copyright (C) 2008-2013 Hazelcast.com
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.Node
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Creating MulticastJoiner
Dec 17, 2013 7:24:13 PM com.hazelcast.core.LifecycleService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Address[192.168.1.102]:5701 is STARTING
Dec 17, 2013 7:24:15 PM com.hazelcast.cluster.MulticastJoiner
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] 


Members [1] {
Member [192.168.1.102]:5701 this
}

Dec 17, 2013 7:24:16 PM com.hazelcast.core.LifecycleService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Address[192.168.1.102]:5701 is STARTED
Dec 17, 2013 7:24:16 PM com.hazelcast.partition.PartitionService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Initializing cluster partition table first arrangement...

我也犯了同样的错误。 这是由于
echoonthemember
函数中的这一行造成的

HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
它创建默认或cfg config的新hazelcast实例。在hazelcast的这个实例中搜索成员,该实例实际上并不存在。因此,错误消息显示为
targetNotMemberException

要使其正常工作,只需在
echoonthemember
函数中传递创建的实例。 例如,将其作为类
DistributedExecutor
中的成员变量,并由构造函数进行设置。 然后,如果您的实际实例是
'abcdef'
,那么 用作


不要创建新的
Hazelcast
实例。

hz.getCluster().getMembers()只在返回的集合中提供我的本地计算机。它没有远程计算机。我想知道他们为什么不组成集群。这就是我自己创建成员对象的原因。这就是异常的原因:)因为您无法向未连接的计算机发送消息。然而,最大的问题是为什么你的集群没有形成。你能在原始问题中发布你的配置+一些日志吗?在我的原始问题中发布了异常消息。我没有使用xml文件进行配置。我正在使用代码中配置的TcpIpConfig。这还不足以形成集群吗?如果我错了,请纠正我。我试着在10.69.108.60:5702执行代码,从日志中我看到集群中的另一个成员。它是有效的。但是我如何使远程计算机成为集群的一部分呢?我想,在我在远程计算机上启动相同的进程之前,我就期望远程计算机成为集群的一部分。我这样做了1)在远程计算机上启动distributedexecutiontest。。2) 在本地计算机上启动distributedexecutiontest。。3) 然后我看到远程机器加入了本地机器的集群,然后在hz.getCluster().getMembers()中找到了它。你认为我配置会员的方式有什么问题吗?我不认为这是个问题。可能是您在远程计算机加入集群之前将消息发送到远程计算机吗?您能否尝试从hazelcastInstance.getCluster().getMembers方法中获取正确的成员?我不确定你是否可以像以前那样创建一个成员。谢谢。我从中得到了一些有用的信息。您可以看到它无法连接[连接被拒绝:连接到地址/170.194.100.111:5703]。可能是因为你已经安装并运行了防火墙吗?你也可以发布另一台机器的日志吗?由于某些假设,我显然忽略了connecton拒绝消息。您是希望在本地机器的jvm仍处于运行状态时记录远程机器的日志(然后您可以看到本地机器与远程机器群集)…还是希望仅在远程机器jvm启动和本地机器jvm关闭时记录日志?安装防火墙的可能性是相同的,但我不确定如何确认。在这种情况下,配置是否不同?在一台计算机上调用“iperf-s-p 5701”,在另一台计算机上调用“iperf-c 1.2.3.4-d-p 5701”是否设置了正确的ip。在那之前杀了你。这将测试是否可以进行通信。表示未找到命令。忘记提及我的本地计算机是windows,远程计算机是linux机器(没有根权限)。我应该寻找替代品,因为我可能不知道另一个与windows相结合的命令;已经很多年没用了。我的建议是查看Windows计算机的防火墙设置(或在测试连接问题时禁用防火墙),并与Linux计算机的系统管理员联系,查看是否有任何内容被阻止。无论如何,这是你需要解决的问题。看起来你的集群正在形成。您是否在其他控制台中也看到成员[2]{…}?
Members [2] {
    Member [192.168.1.104]:5701 this
    Member [192.168.1.104]:5702
}
Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
INFO: Looking for hazelcast.xml config file in classpath.
Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
WARNING: Could not find hazelcast.xml in classpath.
Hazelcast will use hazelcast-default.xml config file in jar.
Dec 17, 2013 7:24:13 PM com.hazelcast.config.XmlConfigBuilder
INFO: Using configuration file     /java/projects/Hazelcast/hazelcast/hazelcast/target/classes/hazelcast-default.xml in the classpath.
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.DefaultAddressPicker
INFO: Prefer IPv4 stack is true.
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.DefaultAddressPicker
INFO: Picked Address[192.168.1.102]:5701, using socket         ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
Dec 17, 2013 7:24:13 PM com.hazelcast.system
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Hazelcast Community Edition 3.2-SNAPSHOT (20131217) starting at Address[192.168.1.102]:5701
Dec 17, 2013 7:24:13 PM com.hazelcast.system
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Copyright (C) 2008-2013 Hazelcast.com
Dec 17, 2013 7:24:13 PM com.hazelcast.instance.Node
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Creating MulticastJoiner
Dec 17, 2013 7:24:13 PM com.hazelcast.core.LifecycleService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Address[192.168.1.102]:5701 is STARTING
Dec 17, 2013 7:24:15 PM com.hazelcast.cluster.MulticastJoiner
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] 


Members [1] {
Member [192.168.1.102]:5701 this
}

Dec 17, 2013 7:24:16 PM com.hazelcast.core.LifecycleService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Address[192.168.1.102]:5701 is STARTED
Dec 17, 2013 7:24:16 PM com.hazelcast.partition.PartitionService
INFO: [192.168.1.102]:5701 [dev] [3.2-SNAPSHOT] Initializing cluster partition table first arrangement...
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
IExecutorService executorService = abcdef.getExecutorService("default");