Hazelcast-使用IMap注册地图监听器的正确位置

时间:2018-03-19 12:30:11

标签: java spring-boot hazelcast hazelcast-imap

我有以下用例

我在两台独立的机器上有两个Spring启动应用程序。一个应用程序使用嵌入式hazelcast运行,另一个应用程序连接到运行嵌入式的hazelcast

我有两张地图 - 一张IMap和一张MultiMap。我想添加一个EntryEvictionListener 到IMAP。我想要做的就是从IMap驱逐一个条目,转到MuliMap并从中删除相应的条目。

我正在使用Spring java配置。我想知道应该在哪里注册IMap的监听器。实现EntryEvictionListener接口的类(将使用IMap注册),它是一个Spring托管bean,并且内部还有其他spring托管bean autowired

我打算在spring boot应用程序中注册mapListener,该应用程序连接到在其他spring boot应用程序中运行的嵌入式hazelcast。我计划在postconstruct方法中执行此操作,因此它只运行一次。

这是一个好方法吗?

提前谢谢。

编辑 -

           Class CustomListener implements HazelcastInstanceAware,EntryEvictedListener{

   private HazelcastInstance hazelcastInstance;

   @Override
   public void setHazelcastInstance(HazelcastInstance hazelcastInstance){

   this.hazelcastInstance=hazelcastInstance;

   }

   @Override
   public void entryEvicted(EntryEvent<String,String> event){

   // get multi map from hazelcast instance

   //remove value

  }


}

以上作品!

1 个答案:

答案 0 :(得分:1)

@ indraneel-bende,请查看:http://docs.hazelcast.org/docs/latest-development/manual/html/Distributed_Events/Distributed_Object_Events/Listening_for_Map_Events.html#page_Registering+Map+Listeners

如果你使用Hazelcast-Spring配置,你可以在Hazelcast配置中添加监听器,可以像doc或Java配置中那样配置XML,就是这样。确保MapListener是一个Spring bean。