Во-первых, 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();
Только этот метод вызывается, если вам действительно нужно, и назвать его как можно позже ,