Using Shared Data with Vert.x
在功能上vertx允许,在一个应用的不同部分,或者同一个vertx实例的不同应用,再或者一个集群的vertx实例,之间分享数据。
Shared data includes local shared maps, distributed, cluster-wide maps, asynchronous cluster-wide locks and asynchronous cluster-wide counters.
Local shared maps
Local shared maps 允许你在同一个vertx实例的不同event loop之间安全的分享数据。
Local shared maps 只支持特定的几种类型作为key和value。这些类型必须是不可改变的,或者某些其他类型可以被复制到缓冲区。后一种情况下,在数据被放到map之前会被copy。这样我们就可以确保没有共享访问不同线程之间的可变状态。
SharedData sd = vertx.sharedData();
LocalMap<String, String> map1 = sd.getLocalMap("mymap1");
map1.put("foo", "bar"); // Strings are immutable so no need to copy
LocalMap<String, Buffer> map2 = sd.getLocalMap("mymap2");
map2.put("eek", Buffer.buffer().appendInt(123)); // This