Hazelcast,在缓存中发生某些变化时进行记录
Hazelcast, logging when something changes in the cache
我的 JVM 中嵌入了 运行 Hazelcast。我想要一些简单的日志,每次缓存中发生变化时都会记录下来。像 Cache changed: key = value
.
这样简单的东西
我可以自己写这些日志,但如果这还不存在,我会感到惊讶...
但是我似乎找不到选项。
Hazelcast 中是否已经存在这种日志记录?
没有像这样的简单配置 change
事件记录或处理另一项任务。 Hazelcast 有 EntryListener 接口,你可以根据需要的事件来实现。 Here is the documentation.
您可以尝试使用以下示例代码片段。
根据需要创建自定义 entryListener。
// Your custom entity listener.
@Slf4j
public class MyMapEventLogger implements EntryAddedListener<String, String>,
EntryRemovedListener<String, String>, EntryUpdatedListener<String, String>,
EntryEvictedListener<String, String>, MapEvictedListener, MapClearedListener {
@Override
public void entryAdded(EntryEvent<String, String> event) {
log.info("entryAdded: {}" , event);
}
@Override
public void entryRemoved(EntryEvent<String, String> event) {
log.info("entryRemoved: {}", event);
}
@Override
public void entryUpdated(EntryEvent<String, String> event) {
log.info("entryUpdated: {}", event);
}
@Override
public void entryEvicted(EntryEvent<String, String> event) {
log.info("entryEvicted: {}", event);
}
@Override
public void mapEvicted(MapEvent event) {
log.info("mapEvicted: {}", event);
}
@Override
public void mapCleared(MapEvent event) {
log.info("mapCleared: {}", event);
}
}
在使用 addEntryListener
方法创建后,将您的自定义 entryListener 绑定到您的地图。
public class ListenerSample {
public static void main(String[] args) {
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hz.getMap("myMap");
MyMapEventLogger myMapEventLogger= new MyMapEventLogger();
map.addEntryListener(myMapEventLogger, true);
// Put, modify and then clear
map.put("1", "1");
map.put("1", "2");
map.clear();
}
}
我的 JVM 中嵌入了 运行 Hazelcast。我想要一些简单的日志,每次缓存中发生变化时都会记录下来。像 Cache changed: key = value
.
我可以自己写这些日志,但如果这还不存在,我会感到惊讶... 但是我似乎找不到选项。
Hazelcast 中是否已经存在这种日志记录?
没有像这样的简单配置 change
事件记录或处理另一项任务。 Hazelcast 有 EntryListener 接口,你可以根据需要的事件来实现。 Here is the documentation.
您可以尝试使用以下示例代码片段。
根据需要创建自定义 entryListener。
// Your custom entity listener.
@Slf4j
public class MyMapEventLogger implements EntryAddedListener<String, String>,
EntryRemovedListener<String, String>, EntryUpdatedListener<String, String>,
EntryEvictedListener<String, String>, MapEvictedListener, MapClearedListener {
@Override
public void entryAdded(EntryEvent<String, String> event) {
log.info("entryAdded: {}" , event);
}
@Override
public void entryRemoved(EntryEvent<String, String> event) {
log.info("entryRemoved: {}", event);
}
@Override
public void entryUpdated(EntryEvent<String, String> event) {
log.info("entryUpdated: {}", event);
}
@Override
public void entryEvicted(EntryEvent<String, String> event) {
log.info("entryEvicted: {}", event);
}
@Override
public void mapEvicted(MapEvent event) {
log.info("mapEvicted: {}", event);
}
@Override
public void mapCleared(MapEvent event) {
log.info("mapCleared: {}", event);
}
}
在使用 addEntryListener
方法创建后,将您的自定义 entryListener 绑定到您的地图。
public class ListenerSample {
public static void main(String[] args) {
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
IMap<String, String> map = hz.getMap("myMap");
MyMapEventLogger myMapEventLogger= new MyMapEventLogger();
map.addEntryListener(myMapEventLogger, true);
// Put, modify and then clear
map.put("1", "1");
map.put("1", "2");
map.clear();
}
}