Операции пакетной обработки в API-интерфейсах Google Apps Admin Java

Я написал приложение Java, которое синхронизирует группы Google в нашем домене Google Apps для образования (аналогично функции Google Directory School Sync, но настроен для некоторых из наши конкретные потребности).

Синхронизация работает, но она медленная, потому что она выполняет каждую задачу индивидуально. Я знаю, что существуют API-интерфейсы для операций пакетной обработки, но я не могу найти примеров того, как это реализовано с помощью Java API.

Используемый мной код похож на этот (проверка подлинности и другие настройки выполняются в другом месте):

try
{
    Member m = new Member ();
    m.setEmail (member);
    m.setRole ("MEMBER");
    service.members ().insert (group, m).execute ();
}
catch (Exception e)
{
    // ERROR handling
}

Вместо того, чтобы выполнять эти операции поочередно, я хотел бы их заменить. Может ли кто-нибудь сказать мне, как?

Ответы

Ответ 1

Посмотрите здесь: Пакетный API Java

Например:

BatchRequest batch = new BatchRequest(httpTransport, httpRequestInitializer);
batch.setBatchUrl(new GenericUrl(/*your customized batch URL goes here*/));
batch.queue(httpRequest1, dataClass, errorClass, callback);
batch.queue(httpRequest2, dataClass, errorClass, callback);
batch.execute();

Помните, что:

Тело каждой части само по себе является полным HTTP-запросом со своим собственным глагол, URL, заголовки и тело. HTTP-запрос должен содержать только путь URL-адреса; полные URL-адреса не разрешены в пакетных запросах.

UPDATE

Посмотрите также, как построить пакет с API-интерфейсом Google Batch:

https://github.com/google/google-api-java-client

ОБНОВЛЕНИЕ 2

Попробуйте что-то вроде этого:

// Create the Storage service object
Storage storage = new Storage(httpTransport, jsonFactory, credential);

// Create a new batch request
BatchRequest batch = storage.batch();

// Add some requests to the batch request
storage.objectAccessControls().insert("bucket-name", "object-key1",
    new ObjectAccessControl().setEntity("user-123423423").setRole("READER"))
    .queue(batch, callback);
storage.objectAccessControls().insert("bucket-name", "object-key2",
    new ObjectAccessControl().setEntity("[email protected]").setRole("READER"))
    .queue(batch, callback);
storage.objectAccessControls().insert("bucket-name", "object-key3",
    new ObjectAccessControl().setEntity("[email protected]").setRole("OWNER"))
    .queue(batch, callback);

// Execute the batch request. The individual callbacks will be called when requests finish.
batch.execute();

Отсюда: Пакетный запрос с Google Storage Json Api (JAVA)