Как использовать стример данных ignite с двоичными объектами, данные, не загруженные в кластер

#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. пожалуйста, добавьте автоматический сброс в свой ответ, и я приму его.