#java #ignite
Вопрос:
У меня есть кэш сервера, основанный на 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 и двоичным объектом?
Что я делаю не так?
Примечание: Потоковая передача с реальным объектом активов работает нормально.
Ответ №1:
Вам нужно смыть() стример. Это вынудило бы его отправить данные в очереди на сервер. Работал в моем репродукторе.
В качестве альтернативы, поместите в поток больше записей, чем размер буфера
Вы также можете установить частоту автоматической промывки, заставляя стримеру промываться с заданным интервалом.
Комментарии:
1. интересно, что мой размер буфера составлял 10, и все равно ничего не было добавлено. как только я добавил этот стример.Частота автозапуска(1000); Я получаю ресурсы.
2. пожалуйста, добавьте автоматический сброс в свой ответ, и я приму его.