我有以下用例
我在两台独立的机器上有两个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
}
}
以上作品!
答案 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。