1

タスク実行でローカル hazelcast メンバーを検索する方法を探しています。私が使用しているバージョンは 2.5-SNAPSHOT です。チュートリアルのスニペットが機能していないようです:

public class Echo implements Callable<String>, Serializable {
    public String call() {
        return Hazelcast.getCluster().getLocalMember().toString() + ":" + input;
    }
}

非推奨の getCluster() を呼び出すと、新しいメンバーの作成と接続がトリガーされるようになりました。

現時点では、HazelcastInstance.getCluster().getLocalMember() を介して取得できましたが、この種のインジェクションで呼び出し可能オブジェクトを複雑にしたくありません。

ローカル メンバーを検索する適切な方法を教えてください。

4

1 に答える 1

5

callable は HazelcastInstanceAware を実装する必要があります。

ここで例:

public class EchoExample {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        Config config = new Config();
        HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(config);
        HazelcastInstance instance2 = Hazelcast.newHazelcastInstance(config);
        ExecutorService executorService = instance1.getExecutorService("exec1");
        Future<String> future = executorService.submit(new Echo());
        System.out.println(future.get());

    }

    static class Echo implements HazelcastInstanceAware, Serializable, Callable<String> {
        transient HazelcastInstance localInstance;

        public String call() throws Exception {
            return localInstance.toString();
        }

        @Override
        public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
            this.localInstance = hazelcastInstance;
        }
    }

}
于 2013-04-04T12:47:28.260 に答える