2016-10-13 8 views
2

に展開するときに非同期タイムアウトを設定する方法を、私は非同期タイムアウトを設定しましたWebsphereなどの外部サーバーにデプロイする場合と同じですか?春ブーツは、次のように私の春ブーツアプリを展開するための組み込みのTomcatを使用している間、外部のサーバ

spring.mvc.async.requestタイムアウト= 600000

をしかし、これは何の効果もありませんでした:

は、プロパティを使用してみました。

編集:

私はアンドレイの提案に従ってAsyncConfigurerを実装しようとしました。しかし、期待どおりに動作しませんでした。以下は私の構成クラスです:

@SpringBootApplication 
@EnableAsync 
public class Application implements AsyncConfigurer { 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 

@Override 
public Executor getAsyncExecutor() { 
    Executor executor = new ThreadPoolExecutor(10, 20, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10), 
      new ThreadPoolExecutor.AbortPolicy()); 
    return executor; 
} 

@Override 
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { 
    // TODO Auto-generated method stub 
    return new SimpleAsyncUncaughtExceptionHandler(); 
} 
} 

私は60秒としてタイムアウトを与えましたが、この構成を試すと30秒後に要求がタイムアウトしていました。 RestClientを使用していました。

紛失しているものがありますか? SpringApplicationで

答えて

0

(最初AsyncConfigurerと呼ばれるインタフェースを実装)クラスIは次のように私のカスタムAsyncExeuctorを作成します。

@Override 
    public Executor getAsyncExecutor() { 
     Executor executor = new ThreadPoolExecutor(
       poolSize, 
       maxSize, 
       keepAlive, // <--- The keep alive for the async task 
       TimeUnit.SECONDS, // <--- TIMEOUT IN SECONDS 
       new ArrayBlockingQueue<>(qSize), 
       new ThreadPoolExecutor.AbortPolicy() // <-- It will abort if timeout exceeds 
     ); 
     return executor; 
    } 

あなたはその後、application.propertiesファイルにpoolSizemaxSizeなどを設定することができ@Valueアノテーションを使用してそれらを「挿入」します。

+0

私はAsynCConfigurerを実装せず、@ SpringBootApplicationでマークされたクラスに直接いくつかの設定を書いているということをSpringブートの方法で行う方法がありますか? –

+0

@bidishamukherjeeコードスニペットは '@ SpringBootApplication'でマークされたクラスからのものです。そのクラスはAsyncConfigurerを実装する必要があります。 –

+0

それを得ました。しかし、spring.mvc.async.request-timeoutプロパティを設定しても機能しないのはなぜですか?すでに与えられた答えをありがとう。 –

関連する問題