Tigase 组件中的 addOutPacket

Posted

技术标签:

【中文标题】Tigase 组件中的 addOutPacket【英文标题】:addOutPacket in Tigase Component 【发布时间】:2013-11-19 13:26:58 【问题描述】:

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

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

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

我可以从线程中尝试 addOutPacket现在不工作) 我应该在组件中实现我的 QOS 以便它可以轻松地执行 addOutPacket 或者有没有更好的方法来实现这一点

非常感谢您的建议

编辑:

一些说明:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Tigase 组件中的 addOutPacket的主要内容,如果未能解决你的问题,请参考以下文章

Tigase 外部组件作为单个 jar

如何在 ubuntu 机器(localhost)中将组件 pubsub 配置为 tigase 服务器?

与 Tigase 的 SMS 网关集成

无法连接到在 EC2 实例上运行的 Tigase 服务器:连接被拒绝

用户在 Tigase 中创建的聊天室

Tigase 中最后一次看到的信息