CN112039966A - 一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 - Google Patents
一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 Download PDFInfo
- Publication number
- CN112039966A CN112039966A CN202010861292.3A CN202010861292A CN112039966A CN 112039966 A CN112039966 A CN 112039966A CN 202010861292 A CN202010861292 A CN 202010861292A CN 112039966 A CN112039966 A CN 112039966A
- Authority
- CN
- China
- Prior art keywords
- client
- online
- state
- offline
- activemq
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明属于通信领域,功能了一种基于ActiveMQ的客户端在线状态更新的方法,所述方法为:在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并使客户端的状态处于在线状态;在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除该会话ID和客户端ID的映射关系并将客户端的状态更新为下线状态,若不存在,则保持客户端的状态为在线状态不变;所述客户端上线消息包括客户端ID和客户端和ActiveMQ中间件之间建立连接时生成会话ID,所述客户端下线消息包括会话ID。基于该方法可以避免客户端的在线状态更新错误,同时,本发明还公开了基于该方法的程序和系统。
Description
技术领域
本发明涉及通信领域,具体为一种免基于ActiveMQ的客户端在线状态更新的方法、程序和系统。
背景技术
现有技术中,设备(即客户端)和中间件建立和断开连接时,由业务系统的上下线程序通过监听ActiveMQ主题"ActiveMQ.Advisory.Connection"处理上线下线逻辑。
其逻辑过程为:
设备A连接activemq,中间件生成客户端上线消息,该消息包含了会话ID和客户端ID,会话ID每建立一次连接都会生成且每次连接都是新的会话ID,上下线程序通过监听主题获取上线消息,更新设备端的状态为在线;
设备A断开和activemq的连接时,会通过中间件,中间件会生成客户端下线消息并断开连接,客户端下线消息被上下线程序监听后更新客户端状态为下线;
存在的问题在于:
设备A是在线连接activemq状态,当设备A网络突然断开,这时设备A来不及发送下线消息给activemq,此刻的设备A在activemq仍然是处于在线状态,短暂时间后(以秒或毫秒计,几乎不会对用户的指令处理造成可感知的延迟),设备A网络恢复会重新连接activemq,发送上线请求,activemq处理设备A的上线请求发出设备上线的主题,同时发现设备A仍有旧的连接处在在线状态即activemq会发现存在两个连接,一个新的刚刚建立的连接和旧的连接,就会把旧的连接给断开(同一个客户端同时只能有一个连接),发出设备下线的消息给上下线程序,但是此时设备A的真实状态应该是在线的,activemq对于设备A来说,最后的消息是设备下线,单纯的对该上下线主题处理设备的在线状态,则会造成不正确的状态,即设备A此时是在线,但是上下线处理程序会将状态更新为下线。
所以,本案所要解决的技术问题是:如何避免设备在线状态更新错误。
发明内容
针对以上现有技术存在的不足之处,本发明的目的在于提供一种基于ActiveMQ的客户端在线状态更新的方法,上下线处理程序基于该方法可以避免客户端的在线状态更新错误,同时,本发明还公开了基于该方法的程序和系统。
为实现上述目的,本发明提供如下技术方案:
一种避免基于ActiveMQ的客户端假在线的方法,所述方法为:
在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并使客户端的状态处于在线状态;
在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除该会话ID和客户端ID的映射关系并将客户端的状态更新为下线状态,若不存在,则保持客户端的状态为在线状态不变;
所述客户端上线消息包括客户端ID和客户端和ActiveMQ中间件之间建立连接时生成会话ID,所述客户端下线消息包括会话ID。
在上述的避免基于ActiveMQ的客户端假在线的方法中,通过订阅ActiveMQ中间件的上下线主题获取客户端上线消息和客户端下线消息。
同时,本发明还公开了一种上下线处理程序,包括如下模块:
数据库:用于存储会话ID和客户端ID的映射关系;
上线消息处理模块:用于在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并发送上线指令给状态更新子模块;
下线消息处理模块:在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除数据库中该会话ID和客户端ID的映射关系并发送下线指令给状态更新子模块,若不存在,则忽略该客户端下线消息;
状态更新模块:用于根据上线指令和下线指令更新客户端在线状态。
在上述的上下线处理程序中,还包括缓存模块,所述客户端在线状态存储在缓存模块内或数据库内;所述状态更新子模块对存储在缓存模块或数据库内的客户端在线状态的进行更新。
最后,本发明还公开了一种客户端在线状态处理系统,包括ActiveMQ中间件、如上所述的上下线处理程序;
ActiveMQ中间件:用于建立和客户端的连接时,生成客户端上线消息;断开客户端的连接时,生成客户端下线消息;当ActiveMQ中间件中同时存在和同一客户端的多个连接时,断开除最近的连接之外的其他连接;将客户端上线消息、客户端下线消息发送给上下线处理程序的上线消息处理模块、下线消息处理模块。
与现有技术相比,本发明的有益效果是:
通过清除原有的会话ID和设备端ID的映射关系,使数据库中仅仅保存最新的映射关系,这样设备在掉线并短时间再连接的情况下,不会发送设备下线消息,会持续保持设备在线的状态,避免中间件的连接更新机制导致的假下线的问题出现。
附图说明
图1为本发明实施例1的流程图。
图2为发明实施例1的系统框图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
参考图1,一种避免基于ActiveMQ的客户端假在线的方法,所述方法为:
在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并使客户端的状态处于在线状态;
在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除该会话ID和客户端ID的映射关系并将客户端的状态更新为下线状态,若不存在,则保持客户端的状态为在线状态不变;
所述客户端上线消息包括客户端ID和客户端和ActiveMQ中间件之间建立连接时生成会话ID,所述客户端下线消息包括会话ID。
客户端在上线时,会建立和ActiveMQ中间件的联系,ActiveMQ中间件在建立和客户端的联系时,会建立一会话ID和获取客户端ID,并将会话ID和客户端ID生成客户端上线消息;
业务系统中的上下线程序会监听ActiveMQ中间件的主题"ActiveMQ.Advisory.Connection",客户端上线消息、客户端下线消息均在该主题中,业务系统中的上下线程序会根据通过监听该主题得到的客户端上线消息、客户端下线消息进行上述的处理。
本方案的核心在于,对于数据库中会话ID和客户端ID在每次设备上线时进行更新,去除与该客户端ID相关联的任何映射关系,仅保存最新的映射关系,本实施例中所述的映射关系是指会话ID和客户端ID组成的一组数据。数据库中会存储各客户端的映射关系。
通过该方法,可避免客户端在几乎无感知的时间段内掉线再连接时业务系统的上下线程序更新设备状态为下线,避免了设备的在线状态的更新混乱。
进一步的,本实施例还公开了一种设备上下线处理系统,其包含了上下线处理程序、ActiveMQ中间件,参考图2,上下线处理程序是包含在业务系统中的,用户通过业务系统中的上下线处理程序感知客户端的在线状态;其包括如下模块:
数据库:用于存储会话ID和客户端ID的映射关系;
上线消息处理模块:用于在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并发送上线指令给状态更新子模块;
下线消息处理模块:在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除数据库中该会话ID和客户端ID的映射关系并发送下线指令给状态更新子模块,若不存在,则忽略该客户端下线消息;
状态更新模块:用于根据上线指令和下线指令更新客户端在线状态;
客户端在线状态可存储在数据库内,状态更新模块在更新客户端的状态时修改数据库的客户端在线状态的数据即可;
ActiveMQ中间件用于建立和客户端的连接时,生成客户端上线消息;断开客户端的连接时,生成客户端下线消息;当ActiveMQ中间件中同时存在和同一客户端的多个连接时,断开除最近的连接之外的其他连接;将客户端上线消息、客户端下线消息发送给上下线处理程序的上线消息处理模块、下线消息处理模块。
在本实施例中,还可以额外包括缓存模块,客户端在线状态也可以缓存在缓存模块内,状态更新模块在更新客户端的状态时修改缓存模块的客户端在线状态的数据即可,每次程序重启后该缓存中的,客户端在线状态会被清除。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (5)
1.一种基于ActiveMQ的客户端在线状态更新的方法,其特征在于:所述方法为:
在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并使客户端的状态处于在线状态;
在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除该会话ID和客户端ID的映射关系并将客户端的状态更新为下线状态,若不存在,则保持客户端的状态为在线状态不变;
所述客户端上线消息包括客户端ID和客户端和ActiveMQ中间件之间建立连接时生成会话ID,所述客户端下线消息包括会话ID。
2.根据权利要求1所述的基于ActiveMQ的客户端在线状态更新的方法,其特征在于,通过订阅ActiveMQ中间件的上下线主题获取客户端上线消息和客户端下线消息。
3.一种上下线处理程序,其特征在于,包括如下模块:
数据库:用于存储会话ID和客户端ID的映射关系;
上线消息处理模块:用于在接收到ActiveMQ中间件发送的客户端上线消息时,更新数据库中会话ID和客户端ID的映射关系,并发送上线指令给状态更新子模块;
下线消息处理模块:在接收到ActiveMQ中间件发送的客户端下线消息时,查询数据库中是否存在包含会话ID的映射,若存在,则清除数据库中该会话ID和客户端ID的映射关系并发送下线指令给状态更新子模块,若不存在,则忽略该客户端下线消息;
状态更新模块:用于根据上线指令和下线指令更新客户端在线状态。
4.根据权利要求3所述的上下线处理程序,其特征在于,还包括缓存模块,所述客户端在线状态存储在缓存模块内或数据库内;所述状态更新子模块对存储在缓存模块或数据库内的客户端在线状态的进行更新。
5.一种客户端在线状态处理系统,其特征在于,包括ActiveMQ中间件、如权利要求4所述的上下线处理程序;
ActiveMQ中间件:用于建立和客户端的连接时,生成客户端上线消息;断开客户端的连接时,生成客户端下线消息;当ActiveMQ中间件中同时存在和同一客户端的多个连接时,断开除最近的连接之外的其他连接;将客户端上线消息、客户端下线消息发送给上下线处理程序的上线消息处理模块、下线消息处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861292.3A CN112039966A (zh) | 2020-08-25 | 2020-08-25 | 一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861292.3A CN112039966A (zh) | 2020-08-25 | 2020-08-25 | 一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112039966A true CN112039966A (zh) | 2020-12-04 |
Family
ID=73580736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010861292.3A Pending CN112039966A (zh) | 2020-08-25 | 2020-08-25 | 一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112039966A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112968963A (zh) * | 2021-02-23 | 2021-06-15 | 上海昊沧系统控制技术有限责任公司 | 基于WebSocket进行用户强制实时下线的方法 |
CN114189551A (zh) * | 2021-12-18 | 2022-03-15 | 杭州视洞科技有限公司 | 一种在线状态一致性的统计方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119258A (zh) * | 2007-09-03 | 2008-02-06 | 中国联合通信有限公司 | 一种解决匿名访问wap网关的方法及系统 |
CN101707604A (zh) * | 2009-11-20 | 2010-05-12 | 杭州华三通信技术有限公司 | 一种防恶意攻击的方法、系统及装置 |
CN104683490A (zh) * | 2013-11-27 | 2015-06-03 | 华为技术有限公司 | 互联网协议地址的回收方法和装置 |
CN105939374A (zh) * | 2016-02-26 | 2016-09-14 | 杭州迪普科技有限公司 | 在线用户下线的处理方法及装置 |
CN108460160A (zh) * | 2018-03-29 | 2018-08-28 | 武汉斗鱼网络科技有限公司 | 数据库实例的下线方法、装置、终端及存储介质 |
-
2020
- 2020-08-25 CN CN202010861292.3A patent/CN112039966A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119258A (zh) * | 2007-09-03 | 2008-02-06 | 中国联合通信有限公司 | 一种解决匿名访问wap网关的方法及系统 |
CN101707604A (zh) * | 2009-11-20 | 2010-05-12 | 杭州华三通信技术有限公司 | 一种防恶意攻击的方法、系统及装置 |
CN104683490A (zh) * | 2013-11-27 | 2015-06-03 | 华为技术有限公司 | 互联网协议地址的回收方法和装置 |
CN105939374A (zh) * | 2016-02-26 | 2016-09-14 | 杭州迪普科技有限公司 | 在线用户下线的处理方法及装置 |
CN108460160A (zh) * | 2018-03-29 | 2018-08-28 | 武汉斗鱼网络科技有限公司 | 数据库实例的下线方法、装置、终端及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112968963A (zh) * | 2021-02-23 | 2021-06-15 | 上海昊沧系统控制技术有限责任公司 | 基于WebSocket进行用户强制实时下线的方法 |
CN112968963B (zh) * | 2021-02-23 | 2023-03-24 | 上海昊沧系统控制技术有限责任公司 | 基于WebSocket进行用户强制实时下线的方法 |
CN114189551A (zh) * | 2021-12-18 | 2022-03-15 | 杭州视洞科技有限公司 | 一种在线状态一致性的统计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106385410A (zh) | 基于mqtt的智能家电设备控制系统 | |
CN112039966A (zh) | 一种基于ActiveMQ的客户端在线状态更新的方法、程序和系统 | |
CN110266810B (zh) | 基于mqtt协议的消息接收方法、设备及存储介质 | |
CN106936896B (zh) | Kafka集群的数据传送方法和装置 | |
CN104812094A (zh) | 设备间的连接建立方法和装置 | |
CN105471983A (zh) | 一种建立物联通讯的方法及系统 | |
US20170116094A1 (en) | Fault handling methods in a home service system, and associated household appliances and servers | |
CN107294830B (zh) | 一种数据传输方法及系统 | |
CN102611717A (zh) | 一种业务数据发送方法、系统、客户端代理及服务器代理 | |
CN111092934A (zh) | 更新客户端路由的方法、存储介质 | |
CN112738283B (zh) | 一种信令传输方法、装置、设备及存储介质 | |
CN111371680B (zh) | 双机热备的路由管理方法、装置、设备及存储介质 | |
CN103888283B (zh) | 一种sctp通信方法及装置 | |
CN113904909B (zh) | 分布式坐席管理系统的网络环境变化自适应方法及系统 | |
JP2003076623A (ja) | ネットワークシステム、サーバ装置及び通信端末並びにサーバ切り替え方法 | |
CN113890885B (zh) | 工控机物联控制方法、装置及计算机可读介质 | |
KR101407597B1 (ko) | 망 부하 감소를 위한 푸시 서비스 제공 시스템 및 방법 | |
GB2461501A (en) | Informing a backup call processor of the failure of its active call processor | |
CN108282219B (zh) | 用于车辆卫星定位系统的数据通讯的长链接切换处理方法 | |
CN105681436A (zh) | 控制端与物联网设备之间基于alljoyn协议的通信方法 | |
CN113472955B (zh) | 一种坐席状态一致性控制方法及系统 | |
CN115190005B (zh) | 一种基于Redis的双宿主系统的高可用方法 | |
CN114546438A (zh) | 一种基于自定义消息和时间序列的远程配置更新方案 | |
KR100529009B1 (ko) | 교환기와 유엠에스간의 정보 동기화 방법 | |
KR100358439B1 (ko) | 컴팩트 제어국간의 이더넷을 이용한 데이터 전송방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 511356 Room 501, building 2, No. 63, Yong'an Avenue, Huangpu District, Guangzhou, Guangdong Applicant after: Guangzhou lubangtong Internet of things Technology Co.,Ltd. Address before: 510653 room F315, 95 daguanzhong Road, Tianhe District, Guangzhou City, Guangdong Province Applicant before: GUANGZHOU ROBUSTEL TECHNOLOGIES Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201204 |
|
RJ01 | Rejection of invention patent application after publication |