Hazelcast IMap Entry在删除节点时会消失?

时间:2015-07-25 03:58:08

标签: hazelcast

我一直在寻找一种方法来记录Hazelcast地图中的一些数据,然后在节点消失时删除这些数据。这个想法是这个数据类似于某些进程的地址簿,我只想要在活节点上运行进程的地址,这样我就可以避免将数据推送到死节点进程。有没有什么方法可以在hazelcast中轻松完成,或者我需要某种自定义解决方案,如会员监听器?

提前致谢。

1 个答案:

答案 0 :(得分:1)

MembershipListener是实现它的方法。例如:

public class Test
{
    public static void main( String[] args )
    {
        HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();

        IMap<Object, Object> bookkeeping = hazelcastInstance.getMap( "bookkeeping" );

        hazelcastInstance.getCluster().addMembershipListener( new MembershipListener()
        {
            @Override
            public void memberAdded( MembershipEvent membershipEvent )
            {
                bookkeeping.put( membershipEvent.getMember().getUuid(), true );
            }

            @Override
            public void memberRemoved( MembershipEvent membershipEvent )
            {
                bookkeeping.put( membershipEvent.getMember().getUuid(), false );
            }

            @Override
            public void memberAttributeChanged( MemberAttributeEvent memberAttributeEvent )
            {

            }
        } );
    }
}