gpt4 book ai didi

java - 读旧事件

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:59 26 4
gpt4 key购买 nike

我在使用 Smack 3.1 的应用程序和运行 openfire 的服务器时遇到问题。启动应用程序后,它将读取节点上的最后一条消息。这是行不通的,因为消息被解析、处理并放入数据库中。除了在有效负载中发送消息创建时间之外,还有什么方法可以阻止这种重复吗? (实际上,如果有任何信号表明消息已被“消耗”,那就太棒了)

最佳答案

如果您指的是 pubsub,那么您可以配置节点,使其不使用 persist_itemsmax_items 持久保存项目。

如果您无法控制节点创建,那么您可以做的是检查数据包中的延迟命名空间(jabber:x:delay 和/或 urn:xmpp:delay)

public void processPacket(Packet pkt) {
DelayInformation delay = (DelayInformation)pkg.getExtension("x", "jabber:x:delay");
if (delay != null)
return; //Discard this packet
delay = (DelayInformation)pkg.getExtension("x", "urn:xmpp:delay");
if (delay != null)
return; //Discard this as well
//Otherwise this is a good packet
...
}

您还可以通过检查 DelayInformation 对象来做出一些决定,例如延迟时间、原因等。

如果是 PEP,那么您将始终获得最后发布的项目,并且我认为无法确定它是否被延迟。数据包中没有延迟信息。

您需要获取 nightly buildsbuild your own用于发布订阅支持。我认为当前版本 Smack 3.1.0 不支持 pubsub。

关于java - 读旧事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com