问题源于 近期参与一个线上会议,我的两部手机均参与了这个会议,但是其中一个手机处于关机状态,另外一部手机完整的参与了正常会议,整场会议约产生了100多条语音消息;会议结束后关机的手机充电后开机,但是接受的消息只有40多条,这下问题来了,其他的一些消息去哪了呢,于是开始地毯式排查。
排查时记录了下操作顺序。
客户端a(username=14)、b(username=5)、c(username=1466)都在一个圈子(公共聊天室)t里边,b、c关闭网络,关闭屏幕
1.a往圈子t里边发送50条语音消息(录制新闻联播)
2.后台查询共计50条语音消息
2.ofOffline共计查询到b、c的离线消息均是87条(语音消息44以及翻译文字内容43)
3.客户端b打开网络,接收到的消息数是44,最后一条语音消息的文字版缺失
4.a继续往聊天室发送一条文本消息,ofOffline消息查到c的离线消息仍然是87条
查看openfire的info日志,日志中出现
2015.08.14 16:02:36 org.jivesoftware.openfire.plugin.MessageReceiptPlugin - 其他信息:<message from="1466@127.0.0.1" to="14@127.0.0.1" type="error" id="1439539356276"><body>{"id":74433,"parentid":0,"tag":"C25CA49E-21AF-40FB-B315-E53FC80D6B14","type":"200","from":"14","to":"1437657516095","title":"\u82b1\u65f6\u95f4","time":1439539356236,"content":"456","displayName":"\u5321\u52c7","headImgUrl":"http:\/\/guirenhui.cn\/Data\/upload\/user\/55af176020bea_jpg_s","isanonymity":"0","imgUrlS":"","imgUrlL":"","imgWidth":"","imgHeight":"","voiceUrl":"","voiceTime":"","fileType":"1","url":"","bigv":"0","samplerate":"0","commenterid":"","commentername":"","reisanonymity":"0","tofakeid":"","fromrole":"1","conversion":{"type":"200","toid":"1437657516095","name":"\u82b1\u65f6\u95f4","headurl":"http:\/\/guirenhui.cn\/Data\/upload\/tribe\/6_s"}}</body><error code="404" type="continue"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></message>
5.b继续往聊天室发消息,出现4中类似的日志
2015.08.14 16:09:13 org.jivesoftware.openfire.plugin.MessageReceiptPlugin - 其他信息:<message from="1466@127.0.0.1" to="5@127.0.0.1" type="error" id="1439539753939"><body>{"id":74434,"parentid":0,"tag":"b8fa35d6-e79c-4d65-a12b-e78323d664fc","type":"200","from":"5","to":"1437657516095","title":"\u82b1\u65f6\u95f4","time":1439539753905,"content":"789","displayName":"\u66fe\u5c0f\u5e74","headImgUrl":"http:\/\/guirenhui.cn\/Data\/upload\/user\/54463417336d7_jpg_s","isanonymity":"0","imgUrlS":"","imgUrlL":"","imgWidth":"","imgHeight":"","voiceUrl":"","voiceTime":"0","fileType":"1","url":"","bigv":"0","samplerate":"8000","commenterid":"","commentername":"","reisanonymity":"0","tofakeid":"","fromrole":"0","conversion":{"type":"200","toid":"1437657516095","name":"\u82b1\u65f6\u95f4","headurl":"http:\/\/guirenhui.cn\/Data\/upload\/tribe\/6_s"}}</body><error code="404" type="continue"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></message>
6.openfire管理后台查看到的状态是c出于离线状态
7.登陆open fire控制台发现其中一个设置
存储 - 存储脱机消息以便以后检索。下次接收者登录后将传递此消息。在下面选择一个存储策略及存储器存储最大大小。 |
||||||||
|
|
8.感觉问题应该出现在存储限制中,统计了下87条消息的messageSize刚好101kb,于是修改每个用户的脱机消息存储限制为110.0kb时a继续往圈子里边发消息,发现c的离线消息记录数量会增长到88条
——————
至此,问题原因明确,openfire控制台设置的每个用户的离线消息存储限制会限制用户存储的离线消息数量数
——————
问题解决方案:暂时将openfire的离线消息存储提升至10000.0kb(10m)
考虑到消息的价值,应该存储最近1年的消息,最好可以设置按时间策略存储新的消息,删除早期的消息,但是这个需要修改源码,时间允许的情况下再去做此修改
相关推荐
openfire添加好友离线请求推送
1. **Message Store**:Openfire使用Message Store来保存所有消息,包括离线文件消息。Message Store可以是内存存储或数据库存储,具体取决于服务器配置。离线文件的消息体通常包含文件的URL或指向存储文件的指针。 ...
而这个插件则进一步扩展了这一功能,通过监听 Openfire 的事件,当有新的离线消息产生时,它会主动调用预配置的 RESTful API,将消息数据发送到指定的远程服务器。这样,即使目标用户没有立即上线,远程服务器也可以...
目前研究插件的还比较少,简单做一下学习总结。详细介绍请看我的blog:http://hi.baidu.com/jyleon/blog/item/5a6627dd7fc4dbd18d1029bf.html
这些数据结构共同构建了Openfire的核心功能,提供了用户管理、消息传递、状态管理、群聊和隐私控制等多种功能。了解这些数据结构有助于优化Openfire的性能和安全性,以及进行定制化的开发和调试工作。
Openfire 表结构 数据字典 进行修改密码等操作请参考: Openfire用户密码的保存及加密、解密 http://blog.csdn.net/seeol/article/details/21638663
Openfire有一个插件——Smack Push,它可以配合这些推送服务,将离线消息推送到客户端。 - 配置Openfire的Smack Push插件,需要在插件管理界面安装并激活,然后配置相应的APNs或GCM/FCM证书。 5. **安全与性能优化...
在Openfire中,实现用户接收消息的计数功能是提升通信效率和监控系统性能的重要一环。本文将深入探讨如何利用"openfire的用户接收消息计数器"这一工具来实现这一目标。 首先,我们要理解计数器的工作原理。计数器...
开发者需要集成Openfire的API,创建客户端连接,并通过XMPP协议进行数据交换,实现消息的发送和接收。 **Android消息推送**:在Android上实现消息推送,通常需要处理离线消息、后台运行、电池效率等问题。Openfire...
3. **离线消息**:如果接收方不在线,Openfire会尝试存储离线消息。确认Openfire服务器的离线消息功能正常。 4. **服务器配置**:Openfire服务器的配置可能影响消息传输,如黑名单、白名单或群组权限设置。 五、...
通过以上表结构分析,我们可以看出Openfire数据库设计的细致程度,它涵盖了即时通讯系统所需的各个方面,如用户管理、消息处理、安全设置和扩展功能等。了解这些表结构对于管理和优化Openfire服务器至关重要。
在Openfire中,消息、监听和启动流程是其核心功能,理解这些流程对于管理和维护Openfire服务器至关重要。 **Openfire消息流程**: Openfire的消息传递主要通过XML stanza(元素)进行,包括IQ、MESSAGE和PRESENCE三...
综上所述,Openfire消息回执插件通过DbChatLogsManager管理数据库中的聊天记录,ChatLogPlugin作为插件核心处理回执事件,并且ChatLogs提供对聊天记录数据的抽象和操作。这三者共同协作,实现了Openfire中的消息回执...
Openfire Meetings Chrome extension(谷歌浏览器插件),因为不容易下载,所以特别上传上来,插件版本是0.0.5
总之,"openfire群聊持久化插件"是Openfire服务器的一个重要补充,它通过保存群聊记录和离线消息,提升了用户体验和协作效率。安装和使用这个插件是确保团队沟通连贯性的重要步骤,特别是对于那些依赖群聊进行日常...
### Openfire消息处理流程与详细信息解析 #### XMPP协议概览 XMPP,全称Extensible Messaging and Presence Protocol,是一种基于XML的即时通讯协议。它不仅用于消息发送与接收,还支持状态更新和在线状态通知,即...
Openfire最主要的功能是实现XMPP服务器,Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送.
在标题提到的"openfire全服推送(批量推送)插件"中,我们主要讨论的是如何利用Openfire实现全局推送通知,并且这种推送能够针对所有在线用户进行,而离线用户则不会接收到这些消息。 首先,理解Openfire的推送机制...
- 离线消息处理是通过服务器存储未送达的消息,在用户重新上线时推送,确保消息的完整性。 5. **历史聊天记录**: - 查看历史聊天记录通常需要从服务器拉取,可能涉及分页加载、时间线排序、本地缓存策略等技术。...