【发布时间】:2017-04-27 13:16:10
【问题描述】:
使用 3.6.1 版,为什么 put 和 putTransient 相对于地图侦听器有不同的行为(添加了 .putTransient 触发,更新了 .put 触发)?
public void testNoDelta() {
String str = "world";
String key = "hello";
map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS);
map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS);
map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS);
map.putTransient(key, str, 1000, TimeUnit.MILLISECONDS);
map.put(key, str);
map.put(key, str);
map.put(key, str);
map.put(key, str);
}
【问题讨论】:
-
你也收到
EVICTED/EXPIRED事件吗? -
我没有看到任何被驱逐或过期的事件。
-
没关系,这只是帮助诊断的一种方式,但您也需要监听这些事件才能获得它们。这些将有助于验证的行为是当您执行
put时条目是否已经存在;如果您看到EVICTED,那么它已被删除,如果您还没有看到EVICTED(但一般都可以看到),那么很可能该条目就在那里。如果您知道该条目是否存在,则可以知道是否分别期待UPDATED或ADDED事件。 -
然后,一旦您有办法交叉检查对象存在/不存在的行为,您就可以查看它是否与@vassilis-bekiaris 提到的问题相同。跨度>
标签: cluster-computing hazelcast hazelcast-imap