Tigase组件中的addOutPacket

时间:2013-11-19 13:26:59

标签: xmpp qos tigase

我正在tigase中实施QOS以确保传递消息。下面列出了我的QOS步骤

  • 按时间戳的排序顺序缓存每个消息包(除了编写,键入,停止等)
  • 收到数据包的传递通知后,我将其从缓存中删除
  • 在定期间隔之后,启动一个线程来检查仍然存在于具有时间窗口的缓存中的数据包
  • 如果线程在该时间窗口中发现任何数据包(这意味着该消息未被传递),那么线程需要再次发送

我的问题是如何再次发送数据包进入该线程。

  • 我可以尝试从线程 addOutPacket 它现在不能正常工作
  • 我应该在组件中实现我的QOS,以便它可以轻松地执行 addOutPacket
  • 或者有没有更好的方法来实现这个目标

您的建议非常感谢

编辑:

一些澄清:

  • 我们不会无限期地在缓存中保存邮件
  • 我们最多会重试3次,然后我们会将未确认的数据包保存在离线存储中
  • 如果默认情况下在Tigase中启用了XEP-0198(我认为是这样),当服务器和客户端之间的连接丢失时(无法恢复的故障),我们仍会遇到消息丢失的情况。如果网络层花费时间来检测不可恢复的故障,则发送到该连接的消息将永久丢失。在EDGE或不稳定的互联网连接的情况下,我们将面临严重影响用户体验的问题。

1 个答案:

答案 0 :(得分:1)

Tigase已经支持XEP-0198 - 流管理扩展,其中包括数据包传送确认。因此,我不确定您是否真的需要为Tigase实施QoS系统。 请解释为什么XEP-0198不够好以及您要实现的目标。您对QoS系统的真正含义是什么? 还有一些其他问题 - 当消息无法发送时会发生什么情况让我说100次?你要无限期重试吗?另一个问题。您可以在缓存中保留多少条消息?如果您的缓存已满并且无法在缓存中添加新邮件,该怎么办?您的QoS系统是否设计用于处理1000万连接用户每秒100k消息的负载?