hazelcast - Hazelcast MultiMap LocalEntryListener 提供了不正确的空值
问题描述
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 提供了不正确的空值。我无法通过侦听器获取原始值。我该如何解决这个问题。
解决方案
目前MultiMap
不支持使用includeValue
选项添加本地侦听器,尽管没有理由不应该这样做,请参阅github 问题。
作为一种解决方法,您可以将 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);
推荐阅读
- php - 用户图像加载实名或隐藏图像的实名?图像安全
- pagespeed - 谷歌页面速度下降,说我可以节省更多的加载时间,即使没有任何改变
- django - 如何设置 Django allowed_hosts?
- delphi - 如果 myVar 为 nil,指令 myVar is TMyObj 是否可以工作?
- c - 从不兼容的指针类型传递
- javascript - Googlesheets - ArrayFormula 计算忽略文本单元格的两行的加权平均值
- java - 如何还原此 NotificationManager.Policy 方法?
- c++ - Clang 与 CLion:无法获取编译器信息
- php - 获取支付网关脚本表单控制器并显示在视图中,但未显示支付按钮
- rest - 设计问题:从多个微服务聚合数据并在 UI 中显示的最佳方法