着信 XMPP パケットを処理するために、smack ライブラリと組み合わせた EJB 3.1 アーキテクチャで Glassfish 3.1.1 を使用しています。
このために、着信パケットを処理するシングルトンからスレッドを開始しました。
Packet packet = collector.nextResult();
if (packet != null)
processPacket(packet); // here i lookup my processing EJB and start working
私が必要としているのは、一度に送信者ごとに 1 つのパケットを処理するためにパケットをキューに入れるキューです。現時点では、受信したすべてのパケットを並行して処理しているため、パケットの順序を維持できません。
これをできるだけエレガントに解決する方法はありますか?
こんにちは
PS: 最初のアプローチは、現在どのクライアントがパケットを処理しているかを保存し、収集したパケットを反復処理して、何も処理していない送信者を探すことです。しかし、バッファ内のどのパケットも処理できない場合、これには多くの反復コストがかかるのではないかと心配しています。