1

ExecutorFilter を使用して message_received イベントでスレッドを作成している Apache Mina 2.0.4 に基づくアプリケーションがあります。

本番環境では、ある時点で ExecutorFilter がスレッドを作成していないことがわかりました。代わりに、リクエスト メッセージをブロックします。

ExecutorFilter を適切に使用する方法についてのガイドはありますか? アプリケーションへの同時接続数が最大 100 になると予想しています。

これは ExecutorFilter クラスをオーバーライドする私のクラスです-

public class OneIExecutorFilter extends ExecutorFilter {

    public OneIExecutorFilter(IoEventType...eventTypes){
        super(eventTypes);
    }

    @Override
    public void sessionCreated(NextFilter nextFilter, IoSession session)
            throws Exception {      
        super.sessionCreated(nextFilter, session);
    }   

    @Override
    protected void fireEvent(IoFilterEvent event) {             
        super.fireEvent(event);     
    }   
}
4

2 に答える 2

0

おそらくスレッドが不足しています。100以上ExecutorFilter(int maximumPoolSize, IoEventType... eventTypes)に設定してコンストラクターを使用してみてください。maximumPoolSize

于 2011-06-28T09:56:09.493 に答える
0

そのように ExecutorFilter をオーバーライドする必要はありません。代わりにこれを試してください:

final int min = 1;
final int max = Integer.MAX_VALUE;

// RE: java.util.concurrent.Executors.newCachedThreadPool()
Executor executor = new ThreadPoolExecutor(min, max, 60, TimeUnit.SECONDS, 
    new SynchronousQueue<Runnable>())

ExecutorFilter ef = new ExecutorFilter(executor);
于 2011-07-04T10:31:29.733 に答える