Hazelcast MultiMap LocalEntryListener 提供不正确的空值

Hazelcast MultiMap LocalEntryListener provides incorrect null values

MultiMap<String, Integer> multiMap = hazelcastInstance.getMultiMap("mymap");
multiMap.addLocalEntryListener(new EntryListener<String, Integer>() {
    @Override
    public void entryAdded(EntryEvent<String, Integer> event) {
          System.out.println("******" + event);
    }

    @Override
    public void entryRemoved(EntryEvent<String, Integer> event) {
          System.out.println("******" + event);
    }
      ...
});

multiMap.put("1", 1);
multiMap.remove("1", 1);
******EntryEvent{entryEventType=ADDED, member=Member [172.24.22.28]:5702 - 5fb398ff-c034-478e-9a89-ebd3603fd2fd this, name='mymap', key=1, oldValue=null, value=null, mergingValue=null}

******EntryEvent{entryEventType=REMOVED, member=Member [172.24.22.28]:5702 - 5fb398ff-c034-478e-9a89-ebd3603fd2fd this, name='mymap', key=1, oldValue=null, value=null, mergingValue=null}

Hazelcast MultiMap LocalEntryListener 提供了不正确的空值。我无法通过 Listener 获取原始值。我该如何解决这个问题。

目前 MultiMap 不支持使用 includeValue 选项添加本地侦听器,尽管没有理由不支持,请参阅 github issue.

作为解决方法,您可以将 multimap 转换为 AbstractDistributedObject 并将侦听器直接添加到 MultiMapService

EntryListener<String, Integer> listener = new EntryListener<String, Integer>() {
@Override
public void entryAdded(EntryEvent<String, Integer> event) {
    System.out.println("******" + event);
}
@Override
public void entryRemoved(EntryEvent<String, Integer> event) {
    System.out.println("******" + event);
}
...
};
AbstractDistributedObject<MultiMapService> multiMapProxy = (AbstractDistributedObject) multiMap;
multiMapProxy.getService().addLocalListener("mymap", listener, null, true);