客户端已添加对异步操作的支持 库。
作为CMIS客户端,如何使用OpenCMIS 0.14或更高版本并行执行多个并行下载或多个并行下载?
我的目标是通过多线程更快地完成所有操作。我可以手动在多个线程之间共享一个Session对象,但是如果OpenCMIS有内置功能,我宁愿使用它。
答案 0 :(得分: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();
如果您确实需要,请仅调用此方法,并尽可能晚地调用它。