2016-04-28 13 views
0

私はウサギの消費者を持っていて、内部にはスレッドプールがあります。計算が完了するまで待つ必要があるので、私はスレッドプールを持つことに決めました。しかし、私が気付いたように、TPの使用は凍結のような奇妙な結果を引き起こします。だから私は、ウサギの消費者の中でTPを使うのは正しいのでしょうか?それは春のウサギのツールを使用して同じ機能を達成することは可能ですか?消費者のJavaスプリングウサギスレッドプール

... 
ThreadPoolExecutor pool = new ThreadPoolExecutor(cores, 50, 30L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(3000)); 

public void onMessage(){ 

    pool.execute(()->{ 
    //do something 
    handleMessage(...);//return to some output queue 
    }); 

} 

または

public void onMessage(){ 
     //do something 
     handleMessage(...);//return to some output queue 
    } 
+0

春のrabbitmqツールは多少同じです。自動確認を使用してメッセージを消費していますか? –

答えて

1

単にあなた自身のスレッド・プールにハンドオフするよりも、リスナーの容器にconcurrentConsumersを高めるために、一般的に優れています。

コードはスレッドセーフである必要があります。

現在のソリューションでは、リスナーが終了したときにメッセージが確認されるため、メッセージが失われる可能性があります。

関連する問題