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