Java Hazelcast-使用IMap注册映射侦听器的正确位置

Java Hazelcast-使用IMap注册映射侦听器的正确位置,java,spring-boot,hazelcast,hazelcast-imap,Java,Spring Boot,Hazelcast,Hazelcast Imap,我有以下用例 我在两台独立的机器上有两个Spring boot应用程序。一个应用程序正在运行嵌入式hazelcast,另一个应用程序正在连接运行嵌入式的hazelcast 我有两个地图-一个IMap和一个MultiMap。我想添加一个EntryRejectionListener 给IMAP。我想做的是从IMap中逐出一个条目,转到MuliMap并从中删除相应的条目 我正在使用SpringJava配置。我想知道应该在哪里向IMap注册侦听器。实现EntryReceivetionListener接口

我有以下用例

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

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

我正在使用SpringJava配置。我想知道应该在哪里向
IMap
注册侦听器。实现EntryReceivetionListener接口(将在
IMap
中注册)的类,它是一个spring管理的bean,内部还有其他spring管理的bean
自动连接的

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

这是一个好方法吗

先谢谢你

编辑-

类CustomListener实现HazelCastInstanceWare,EntryReceivedListener{
私人HazelcastInstance HazelcastInstance;
@凌驾
公共无效setHazelcastInstance(HazelcastInstance HazelcastInstance){
this.hazelcastInstance=hazelcastInstance;
}
@凌驾
public void entryexecuted(EntryEvent事件){
//从hazelcast实例获取多重映射
//删除值
}
}

以上工作

@indraneel bende,请检查以下内容:


如果使用Hazelcast-Spring配置,可以在Hazelcast配置中添加侦听器,可以是doc或Java配置中的XML配置,仅此而已。确保您的
MapListener
是Spring bean。

@indraneel bende,请检查以下内容:


如果使用Hazelcast-Spring配置,可以在Hazelcast配置中添加侦听器,可以是doc或Java配置中的XML配置,仅此而已。确保您的
MapListener
是一个Spring bean。

如果我连接到Spring托管bean中的hazelcast(与此相同的hazelcast配置),该怎么办?因为在IMap中逐出时,我将从中删除相应的值MultiMap@IndraneelBende,我不明白你的意思。您能澄清一下吗?我的hazelcast嵌入在Spring启动应用程序中。在我将添加到hazelcast配置的IMap的MapListener中,当从IMap中逐出一个条目时,我将连接到同一个嵌入式hazelcast实例以从多映射中删除一个值。可以吗?这会导致问题吗?@IndraneelBende
我将连接到同一个嵌入式hazelcast实例
。当你说连接时,你是如何连接的?通常,您可以在侦听器中实现
HazelcastInstanceAware
,并访问
HazelcastInstance
。然后你可以做任何你想做的事。由于它是一个
侦听器
,因此不会阻止/影响任何内容。我将使用ClientConfig创建连接。如果我连接到spring托管bean中的hazelcast(与此相同的hazelcast配置),因为在IMap中逐出时,我将从中删除相应的值,该怎么办MultiMap@IndraneelBende,我不明白你的意思。您能澄清一下吗?我的hazelcast嵌入在Spring启动应用程序中。在我将添加到hazelcast配置的IMap的MapListener中,当从IMap中逐出一个条目时,我将连接到同一个嵌入式hazelcast实例以从多映射中删除一个值。可以吗?这会导致问题吗?@IndraneelBende
我将连接到同一个嵌入式hazelcast实例
。当你说连接时,你是如何连接的?通常,您可以在侦听器中实现
HazelcastInstanceAware
,并访问
HazelcastInstance
。然后你可以做任何你想做的事。由于它是一个
侦听器
,因此不会阻止/影响任何内容。我将使用ClientConfig创建连接。
           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

  }


}