问题源于 近期参与一个线上会议,我的两部手机均参与了这个会议,但是其中一个手机处于关机状态,另外一部手机完整的参与了正常会议,整场会议约产生了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添加好友离线请求推送
目前研究插件的还比较少,简单做一下学习总结。详细介绍请看我的blog:http://hi.baidu.com/jyleon/blog/item/5a6627dd7fc4dbd18d1029bf.html
offlineMsgPushOpenfire 离线消息推送插件, 本例使用 RESTFul 请求到另一台服务器来推送消息
Openfire 表结构 数据字典 进行修改密码等操作请参考: Openfire用户密码的保存及加密、解密 http://blog.csdn.net/seeol/article/details/21638663
非常详细的openfire的表结构介绍,能够帮助你对openfire的表结构信息由清晰的认识
openfire的用户接收消息计数器,应用很方便,通过填写openfire的用户user_no号与密码,还有服务器的ip地址,点击登录就可以等待消息的接收,并且统计接收消息的数量.
Openfire Meetings Chrome extension(谷歌浏览器插件),因为不容易下载,所以特别上传上来,插件版本是0.0.5
代码很简单,可以用,修改一下配置文件就行了
Openfire最主要的功能是实现XMPP服务器,Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送.
Openfire数据结构详解
openfire处理消息流程及openfire详细信息
Openfire Meetings Chrome extension(谷歌浏览器插件)。是对基于XMPP协议的openfire服务器的视频支持扩展插件,需要openfire服务器本身装有Openfire Meetings插件(官网...
openfire消息、监听、启动流程分析 openfire消息、监听、启动流程分析 openfire消息、监听、启动流程分析
openfire插件,本插件直接在openfire里安装即可,集成消息在线和离线的存储、查询接口,图片、表情、语音文件的上传和下载对外接口,因此,不需要修改openfire源码即可满足聊天的实用功能,对外提供3个接口,一消息...
安装openfire的详细过程,手把手的教你,
openfire防止消息丢失插件,防止丢包插件
详细整理了openfire服务端所有的表机构
openfire服务器在进行消息转发时,如果接收者网络断开,服务器检测不到接收者已下线,转发后消息会丢失,为解决消息丢失,有四种解决方案: 1.发送之前“发送心跳” 2.发送之前“发自定义结构” 3.客服端收到消息...
初步研究了一下,自己配置好openfire创建好对应的用户能运行