tigase,消息中心,概要设计(36页).doc
《tigase,消息中心,概要设计(36页).doc》由会员分享,可在线阅读,更多相关《tigase,消息中心,概要设计(36页).doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-tigase消息中心概要设计 文档历史日期作者版本注释2012/06/08chensx1.0创建2012/06/25chensx1.1增加在线数据统计功能1. 总体概述(看不清楚可以适当拉大)这里关注以下功能:5、uicSer调用syncSer同步用户接口6、publishSer向pubsubSer发布广告7、查找订阅相关者,或插入前端广告应用订阅的相关信息8、使用XMPP把广告发给订阅者9、syncSer去数据库查找在线情况,在线马上发送,不在线数据存储回数据库10、数据同步,会话管理,IM消息发送14、syncSer访问tigasedb库15、syncSer调用dubbo授权成功则改变t
2、igasedb用户状态2. PubsubServer和SyncServer需求,tigase整改需求Pubsubserver概要需求1、 实现单个用户消息下发功能2、 现实多个用户消息下发功能3、 现实广播功能4、 对用户消息下发实现离线是否需要下发功能5、 消息推送DEMO界面开发SyncServer概要需求1、 同步用户信息(包括禁用、启用、增加功能)2、 获取多个用户状态3、 获取单个用户状态4、 分页查询用户状态(以上2、3、4服务在Pubsubserver也提供)tigase整改需求1、 加入dubbo消费者的支持2、 tigase 授权,使用uic的user进行授权3、 开发离线消
3、息是否发送支持4、 前端网络断开超时5 minute 服务端断开改会话,置为offline状态(超时时间可设置)5、 使用tsung测试tigase 负载能力6、 解决tigase集群配置等方法3. pubsubServer和SyncServer接口概要设计3.1. pubsubServer考虑到负载均衡,集成dubbo框架进行开发grape-pubsub-api接口设计如下:/* * 通知服务接口 * author chensx * date 2012-3-27 下午3:38:32 * version 1.0 */public interface NotifyService /* * 发布广
4、播 * author chensx * date 2012-3-27 下午3:39:18 * param message 要发送到消息 * param SendFlagOfOffline 离线消息发送标记true需要发送/false不需要发送 */ public void sendBroadcast(String strMessage,boolean SendFlagOfOffline); /* * 发布组播即多个用户 * author chensx * date 2012-05-09 下午5:39:18 * param userList 用户list * param message 要发送到
5、消息 * param SendFlagOfOffline离线消息发送标记 true需要发送/false不需要发送 */public void sendMulticast(List userList,String strMessage,boolean SendFlagOfOffline); /* * 通知某个用户 * author chensx * date 2012-3-27 下午3:39:41 * param username * param message * param SendFlagOfOffline离线消息发送标记true需要发送/false不需要发送 */ public void
6、 sendNotifcationToUser(String username,String strMessage,boolean SendFlagOfOffline); /* * 通知某个用户,默认发送离线消息 * author chensx * date 2012-3-27 下午3:39:41 * param username * param message */ public void sendNotifcationToUser(String username,String strMessage);grape-pubsub-server为grape-pubsub-api接口的实现工程当相同
7、父工程的其他项目需要调用此接口时需要在pom.xml文件配置如下参数,不同父工程需要写版本号:com.rzico.grapegrape-sync-api$project.parent.versionDubbo工程的配置在这里简略工程中tigase.properties为消息推送相关配置tigase_host=192.168.3.242tigase_virt_host=port = 5222fromUserName = 10000fromUserPwd = chenshaoxiantigase_host 为tigase服务器IPtigase_virt_host为虚拟域名port为xmpp端口使用
8、fromUserName和fromUserPwd登录xmpp服务器去给对方发送消息发送消息的实现包括几个步骤(xmpp通信)1、单例模式获取tigase的相关配置信息2、根据配置信息初始化xmpp服务器的链接3、登录xmpp服务器4、配置发送消息的参数包括 消息内容、离线消息是否发送标识等5、消息体Message发送3.2. syncServer集成dubbo框架进行开发,同步接口grape-sync-api设计如下:/* * 用户同步接口 * author chensx * date 2012-3-28 下午2:11:01 * version 1.0 */ public interface
9、UserSyncService /* * 同步用户信息 禁用0、启用1、删除2、增加3 * author chensx * date 2012-5-8 下午3:43:58 * param username 用户名 * param flag 禁用0、启用1、删除2、增加3 * return true/false */ public boolean syncUser(String username,int flag); /* * 测试用例(负载测试使用) * author chensx * date 2012-5-16 上午9:44:57 * param strId * param usernam
10、e * param userPw * param flag * return true/false */ boolean testUser(String strId, String username, String userPw, int flag);状态接口设计如下:/* * 设备用户状态接口 * author chensx * date 2012-3-28 下午2:11:01 * version 1.0 */ public interface UserStatusService /* * 获取多个用户状态 * author chensx * param userList 用户列表 * da
11、te 2012-3-27 下午5:46:23 * return 多个用户状态 */ public List getMultiUserStatus(List userList); /* * 获取单个用户状态 * author chensx * date 2012-3-27 下午5:47:35 * param username 单个用户名 * return UserStatus 用户状态对象 */ public UserStatus getUserStatus(String username); /* * 获取不同状态的用户相关信息(内部测试使用) * author chensx * date 2
12、012-3-30 上午9:53:15 * param statusFlag 0-离线、1在线、-1所有 * return List */ public List getUserStatusOfFlag(int statusFlag); /* * 分页获取用户状态 * author chensx * date 2012-5-9 下午4:31:02 * param page 分页的参数信息包括页码、一页条数等 * param filters 分页过滤条件 * return Page */ public Page userStatusOfPage(PageRequest page, List fil
13、ters)throws Exception;ORM 使用hibernate4.0 对tigasedb进行交互操作4. Tigase功能调整概要4.1. 功能概要设计一、UIC授权在tigase中集成dubbo消费者,调用UIC接口进行授权集成方式如下:1、更改pom.xml配置(需要去除冲突包/加入uic接口包)2、导入相关lib jar包,相关包如下:以上包需要关联,这些包都是有关联的,随便去掉一个,程序执行就会报错3、加入dubbo配置文件4、在tigase方法中调用uic接口二、离线消息是否发送可选功能1、获取grape-pubsub-server发送到的消息体2、解析消息体3、获取用户
14、是否离线标识,获取离线消息是否发送标识4、根据以上标识判断是否处理离线消息三、解决断网不下线问题1、线程每五分钟检测用户心跳 (sleep方式)2、获取心跳最近时间3、当前时间心跳最近时间1分钟时,关闭该用户session改变该用户数据库状态所以断网的情况下,操作员看到用户下线的时间为(1分钟下线时间6分)4.2. 数据库调整初期通过数据库进行数据同步和授权同步如下:-添加记录时触发tigase user添加数据CREATE DEFINER=root% TRIGGER grape_uic.tri_uicUser_insert BEFORE INSERT ON grape_uic.uic_use
15、r FOR EACH ROWBegin insert into tigase.tig_users(user_id, sha1_user_id) values (CONCAT(new.user_name,), sha1(lower(CONCAT(new.user_name,);End;-删除记录时触发tigase user删除数据CREATE DEFINER=root% TRIGGER grape_uic.tri_uicUser_delete BEFORE DELETE ON grape_uic.uic_user FOR EACH ROWBegin DELETE FROM tigasedb.ti
16、g_users WHERE user_id = CONCAT(old.user_name,); End;-tigasedb存储过程的变更DROP PROCEDURE IF EXISTS tigasedb.TigAddUser;CREATE PROCEDURE tigasedb.TigAddUser(_user_id varchar(2049) CHARSET utf8, _user_pw varchar(255) CHARSET utf8)begindeclare res_uid bigint unsigned;if _user_pw is null theninsert into tig_u
17、sers (user_id, sha1_user_id, user_pw)values (_user_id, sha1(lower(_user_id), _user_pw);elseinsert into tig_users(user_id, sha1_user_id, user_pw)values (_user_id,sha1(lower(_user_id),_user_pw);end if; select LAST_INSERT_ID() into res_uid;insert into tig_nodes (parent_nid, uid, node)values (NULL, res_
18、uid, root);if _user_pw is NULL thenupdate tig_users set account_status = -1 where uid = res_uid;end if;/*select res_uid as uid;*/end;授权如下:DROP PROCEDURE IF EXISTS tigasedb.TigUserLogin;CREATE PROCEDURE tigasedb.TigUserLogin(_user_id varchar(2049) CHARSET utf8,_user_pw varchar(2049) CHARSET utf8)begi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tigase 消息 中心 概要 设计 36
限制150内