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);
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);