Java:AWS CloudSearch - 域客户端/配置最佳实践

时间:2018-02-05 16:52:00

标签: java multithreading amazon-web-services amazon-cloudsearch

我有一个多线程应用程序,可以对AWS CloudSearch(搜索端点)和文档上传调用(到doc端点)进行搜索调用。我需要为每个使用不同的ClientConfiguration,我发现该类不是线程安全的,但我认为AmazonCloudSearchDomainClient是线程安全的。 (右?)

此外,关于AmazonCloudSearchDomainClient,javadoc说,“使用此客户端进行的所有服务调用都是阻塞的,并且在服务调用完成之前不会返回。”所以在我的多线程Web应用程序中,这样做我应该为每个搜索请求创建一个新的域客户端,这样一个用户的搜索不会阻止另一个?这会不会使每次搜索都变慢,因为创建域客户端需要一些时间?

我想真正的问题是:我可以为哪些对象创建静态以及需要为每个请求创建什么?

ClientConfiguration searchConfig = new ClientConfiguration();
ClientConfiguration docConfig = new ClientConfiguration().withGzip(true).withRequestTimeout(90000);

AmazonCloudSearchDomainClient searchClient = new AmazonCloudSearchDomainClient(credentials, searchConfig).withEndpoint(searchEndpoint);
AmazonCloudSearchDomainClient docClient = new AmazonCloudSearchDomainClient(credentials, searchConfig).withEndpoint(searchEndpoint);

更新:在我的测试中,我为每个搜索和文档请求获取了新的ClientConfigurationAmazonCloudSearchDomainClient个对象。获取第一个(无论是搜索还是doc请求)需要500-1000ms,然后所有后续请求都需要< = 10ms。所以也许我应该在安全的一面,只为每个请求创建一个新对象......

0 个答案:

没有答案