2017-02-17 23 views
0

ChangeLog of OpenCMIS 0.14 говорит:Асинхронный CMIS клиент: Скачать или загрузить несколько файлов параллельно с OpenCMIS

Поддержка асинхронных операций была добавлена ​​к клиентскому библиотеке.

Как клиент CMIS, как выполнять несколько загрузок параллельно или несколько загрузок параллельно с OpenCMIS 0.14 или выше?

Моя цель - завершить все операции быстрее, благодаря многопоточности. Я мог бы совместно использовать объект Session между несколькими потоками вручную, но если OpenCMIS имеет встроенную функцию, я бы скорее ее использовал.

ответ

2

Во-первых, create a Session как обычно.

Затем использовать эту сессию, чтобы создать asynchronous session:

int maxParallelRequests = 10; 
AsyncSessionFactory asyncFactory = AsyncSessionFactoryImpl.newInstance(); 
asyncSession = asyncFactory.createAsyncSession(session, maxParallelRequests); 

Затем используйте этот asyncSession, как вы бы использовать обычный объект сеанса.

Смешивание синхронных и асинхронных

Часто вы хотите, чтобы выполнить некоторые синхронные операции тоже. Например, создайте папку синхронно, а затем асинхронно загрузите файлы внутри этой папки. Потому что, если вы не дожидаетесь создания папки, загрузка документа, вероятно, завершится неудачно. Вот как поступать в таких случаях:

// Create the folder synchronously. 
Folder folder = session.getRootFolder().createFolder(properties); 

// Upload the file asynchronously. 
Future<ObjectId> futureDocumentId = asyncSession.createDocument(
    properties, 
    new ObjectIdImpl(remoteFolder.getId()), 
    contentStream, 
    VersioningState.MAJOR 
); 

Обратите внимание на asyncSession.createDocument конструкт выше, это происходит потому, что вы не можете писать folder.createDocument, как он будет использовать синхронный сеанс.

Переменная futureDocumentId позволит вам получить идентификатор документа, когда вам это нужно, если вам это нужно:

ObjectId documentId = futureDocumentId.get(); 

Только этот метод вызывается, если вам действительно нужно, и назвать его как можно позже ,