2012-10-12 33 views
1

我有做一些同步調用到一個特定的REST API的方法是這樣的:部署後爲什麼不考慮等待?

WSRequestHolder url = WS.url("rest_api_url"); 
Promise<WS.Response> promisePerPage = url.get(); 
promisePerPage.getWrappedPromise().await(3000, TimeUnit.MILLISECONDS); 
WS.Response responsePerPage = promisePerPage.get(); 
ProductsWrapper productsWrapper = new Gson().fromJson(responsePerPage.getBody(), ProductsWrapper.class); 

你可能注意到了,我把3秒的電話,以每一個請求能夠及時分析並在DB插入之間。所有的作品在本地都很好,但是在我部署到雲之後,一切都在持續進行,不再需要等待(3秒)...

你知道爲什麼嗎?

+0

也許有不止一個線程服務於督促配置的要求? –

+0

是的,我想這甚至是我在application.conf中看不到任何設置,但也許它是對clodubees的設置......在這種情況下,我該如何解決我的問題......? –

+0

但我不明白你爲什麼需要這3秒? –

回答

1

您需要使用play的異步功能。

我有一個測試在http://play2-on-cb-features-test.hadashi.cloudbees.net/java/async-test 3秒後返回的東西。

我都忍了一些示例代碼在https://github.com/CloudBees-community/play2-on-cb-features-test/blob/master/app/controllers/JavaTest.java#L13

遊戲不能運行許多請求的線程,所以它過長的請求。我猜可能有不同的生產設置。您可以在Akka配置中修改此行爲,但最好僅使用異步支持。

對於遊戲在異步的更多文檔閱讀http://www.playframework.org/documentation/2.0.4/JavaAsync