我有一个基于Java Pojo的服务器缓存。
IgniteCache<Long, Asset> assets配置
CacheConfiguration<Long, Asset> CACHE = new CacheConfiguration()
.setName(Asset.NAME)
.setCacheMode(CacheMode.PARTITIONED)
.setBackups(0)
.setStoreKeepBinary(true)
.setIndexedTypes(Long.class, Asset.class);
}我希望通过使用BinaryObjects的客户端拖缆加载数据,这样就不需要依赖Pojo ->资产
客户端没有异常,但我看不到在集群上创建的任何数据
final IgniteDataStreamer<Long, BinaryObject> streamer = ignite.dataStreamer("Asset");
streamer.perNodeBufferSize(10);
streamer.allowOverwrite(false);
streamer.keepBinary();
long id = faker.random().nextLong(1000);
BinaryObjectBuilder builder = binary.builder("Asset");
builder.setField("id", id, Long.TYPE);
builder.setField("name", "John Doe", String.class);
builder.setField("timezone", TimeZone.getDefault(), TimeZone.class);
final BinaryObject build = builder.build();
streamer.addData(id, build);不会将任何数据加载到缓存中。
pojo和二进制对象之间是否存在不匹配?
我做错了什么?
注意:使用真实的Asset对象进行流式处理可以很好地工作。
发布于 2021-05-11 04:26:18
您需要对拖缆执行flush()操作。这将强制它将排队的数据发送到服务器。在我的复制品里工作过。
或者,将比buffer size更多的条目放入流中
您还可以设置auto flush frequency,强制拖缆以设定的时间间隔刷新。
https://stackoverflow.com/questions/67468187
复制相似问题