我正在使用带有 EJB 3.1 架构的 Glassfish 3.1.1 和 smack 库来处理传入的 XMPP 数据包。
为此,我有一个从单例开始的线程,它处理我的传入数据包。
Packet packet = collector.nextResult();
if (packet != null)
processPacket(packet); // here i lookup my processing EJB and start working
我需要的是一个队列,它将数据包排队,以便一次处理每个发送者一个数据包。目前我并行处理每个收到的数据包,这使我无法保持数据包的顺序。
有什么想法可以尽可能优雅地解决这个问题吗?
问候米
PS:第一种方法是存储当前正在处理数据包的客户端,然后我遍历收集的数据包并查找未处理任何内容的发送方。但是如果缓冲区中的任何数据包都不允许被处理,我担心这会花费很多迭代。