CN109298957A - 一种支持定时发送的具有高可靠性的消息管理方法 - Google Patents
一种支持定时发送的具有高可靠性的消息管理方法 Download PDFInfo
- Publication number
- CN109298957A CN109298957A CN201811213090.7A CN201811213090A CN109298957A CN 109298957 A CN109298957 A CN 109298957A CN 201811213090 A CN201811213090 A CN 201811213090A CN 109298957 A CN109298957 A CN 109298957A
- Authority
- CN
- China
- Prior art keywords
- message
- mysql
- time
- queue
- saved
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
Abstract
本发明在此提供一种支持定时发送的具有高可靠性的消息管理方法;本方案采用传统关系型数据库来保存消息内容和消息状态(比如Mysql),有一个消息接收端来负责将收到消息保存入数据库,并维护消息的状态(比如是否取消)。使用一个非关系型数据库或集群来管理队列(比如Redis),同时有1到多个消息发送端来监听队列,将收到的队列中的消息进行转发,并更新Mysql中对应的记录(比如是否发送、发送次数和发送时间等)。这样,我们通过将消息保存入Mysql来增加数据的可靠性,通过增加消息发送端来加快消息的处理速度,增加吞吐量。同时,我们在消息发送端增加时间检查的逻辑,将到达预订时间的消息进行转发,将未到预订时间的消息重新放入队列中等待下次处理。
Description
技术领域
本发明涉及一种消息管理方法,具体来讲是一种支持定时发送的具有高可靠性的消息管理方法。
背景技术
消息系统能够在不同进程之间提供灵活的消息传递,在消息的传递过程中,发送和接收端松耦合的应用模式使其广泛应用在进程通信,系统集成等领域,成为将企业各种应用集成在一起的基础。
经过检索发现,专利号CN200810090655.7的发明公开了一种消息管理方法,包括:步骤S102,消息服务器将接收的消息分解为逻辑消息和相应的物理消息;步骤S104,将逻辑消息插入内存中的逻辑消息队列,并将物理消息插入内存中的物理消息队列,并根据预定规则将物理消息从物理消息在内存的物理消息队列、高速缓存的物理消息队列、以及持久化存储器的物理消息队列之间进行置换;步骤S106,在消息被接收方接收时,接收方获取逻辑队列中的逻辑消息,并获取相应的物理消息。
专利号CN201610574422.9的发明公开了一种消息管理系统及消息管理方法,消息管理系统包括消息本地持久化模块、消息服务器资源封装模块以及资源管理模块;所述消息本地持久化模块用于保存待发送的消息,并设置消息的进入和取出顺序;所述消息服务器资源封装模块用于封装不同类型的消息服务器,并将消息服务器抽象成资源,并为消息服务器提供用于发送消息的统一对外接口;所述资源管理模块用于管理封装好的资源,按照预设策略选择消息服务器资源进行使用。
专利号CN201610717816.5的发明公开了一种消息管理方法及设备。其中,该方法包括:监测终端设备是否接收到新消息;若是,则判断上述新消息是否为预设的消息类型;若是,则获取用户的指纹;验证上述指纹是否为合法,若是,则在终端设备的屏幕显示上述新消息以供用户阅读。由此可见,实施本发明实施例,可以当新消息为涉及用户财产安全和隐私类型的消息时,使终端设备在验证了用户身份后,才在屏幕上显示上述新消息。
分布式系统服务由于往往分布于不同主机之上,所以信息交互大部分通过网络传输。由于网络的不可靠性和不稳定性,所以增加系统之间的可靠性和网络传输的稳定性就成为设计分布式系统需要考虑的重要问题。而为了减少系统间调用整体的响应时间往往会使用异步传输方式。而使用消息传递就成为一种常用的异步传输方式。而使用消息传递也会面临数据丢失,需要定时发送等相关问题。
发明内容
因此,为了解决上述不足,本发明在此提供一种支持定时发送的具有高可靠性的消息管理方法;本方案采用传统关系型数据库来保存消息内容和消息状态(比如Mysql),有一个消息接收端来负责将收到消息保存入数据库,并维护消息的状态(比如是否取消)。使用一个非关系型数据库或集群来管理队列(比如Redis),同时有1到多个消息发送端来监听队列,将收到的队列中的消息进行转发,并更新Mysql中对应的记录(比如是否发送、发送次数和发送时间等)。这样,我们通过将消息保存入Mysql来增加数据的可靠性,通过增加消息发送端来加快消息的处理速度,增加吞吐量。同时,我们在消息发送端增加时间检查的逻辑,将到达预订时间的消息进行转发,将未到预订时间的消息重新放入队列中等待下次处理。
本发明是这样实现的,构造一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:具有如下流程;
A,消息发送端的处理流程为:
1)轮询并阻塞的从Redis以POP方式获取数据;
2)根据id从Mysql中获取消息的配置信息,如果状态为禁用,则抛弃当前消息,获取下一个消息进行操作;
如果状态为启用,但并未到达预订发送时间则将消息重新加入队列后处理下一条消息。如果状态为启用,并且已经到达预订时间,并且未达到发送次数上限则将消息发送出去,然后将发送状态、最后发送时间、实际发送次数保存入Mysql数据库,如果此消息需要周期发送,则再将次消息放入列表中等待下次处理;
B,消息接收端接收消息的流程为:
1)将收到的消息保存入Mysql;
2)将消息放入Redis队列;
3)返回消息的id是否成功等;
C,消息接收端取消消息发送或定时消息的流程为:
根据消息id从Mysql检索消息,并将此消息状态设置为禁用,并返回是否成功
D,消息服务启动流程(如发生异常重启服务后恢复之前的任务):
1)检索Mysql中的消息状态,将未完成和未禁用的消息放入队列中等待处理。
根据本发明所述一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:Mysql中保存的数据包括:消息id(全局唯一)、消息内容、消息类型(消息的分类标志)、消息状态(包括启用、停用、完成)、消息创建时间、消息预计发送时间、消息预计发送次数、间隔时间、消息最后发送时间、消息实际发送次数。
根据本发明所述一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:Redis中保存的内容为:消息id、消息内容、消息预计发送时间、消息类型。
本发明具有如下优点:本方案采用传统关系型数据库来保存消息内容和消息状态(比如Mysql),有一个消息接收端来负责将收到消息保存入数据库,并维护消息的状态(比如是否取消)。使用一个非关系型数据库或集群来管理队列(比如Redis),同时有1到多个消息发送端来监听队列,将收到的队列中的消息进行转发,并更新Mysql中对应的记录(比如是否发送、发送次数和发送时间等)。这样,我们通过将消息保存入Mysql来增加数据的可靠性,通过增加消息发送端来加快消息的处理速度,增加吞吐量。同时,我们在消息发送端增加时间检查的逻辑,将到达预订时间的消息进行转发,将未到预订时间的消息重新放入队列中等待下次处理。
附图说明
图1是消息接收端接收消息的流程示意图;
图2是消息发送端的处理流程示意图。
具体实施方式
下面将结合附图1-图2对本发明进行详细说明,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明通过改进在此提供一种支持定时发送的具有高可靠性的消息管理方法,具有如下流程;A,消息发送端的处理流程为:
1)轮询并阻塞的从Redis以POP方式获取数据;
2)根据id从Mysql中获取消息的配置信息,如果状态为禁用,则抛弃当前消息,获取下一个消息进行操作;
如果状态为启用,但并未到达预订发送时间则将消息重新加入队列后处理下一条消息。如果状态为启用,并且已经到达预订时间,并且未达到发送次数上限则将消息发送出去,然后将发送状态、最后发送时间、实际发送次数保存入Mysql数据库,如果此消息需要周期发送,则再将次消息放入列表中等待下次处理;
B,消息接收端接收消息的流程为:
1)将收到的消息保存入Mysql;
2)将消息放入Redis队列;
3)返回消息的id是否成功等;
C,消息接收端取消消息发送或定时消息的流程为:
根据消息id从Mysql检索消息,并将此消息状态设置为禁用,并返回是否成功;
D,消息服务启动流程(如发生异常重启服务后恢复之前的任务):
1)检索Mysql中的消息状态,将未完成和未禁用的消息放入队列中等待处理。
本专利中,Mysql中保存的数据包括:消息id(全局唯一)、消息内容、消息类型(消息的分类标志)、消息状态(包括启用、停用、完成)、消息创建时间、消息预计发送时间、消息预计发送次数、间隔时间、消息最后发送时间、消息实际发送次数。
本专利中,Redis中保存的内容为:消息id、消息内容、消息预计发送时间、消息类型。
本方案采用传统关系型数据库来保存消息内容和消息状态(比如Mysql),有一个消息接收端来负责将收到消息保存入数据库,并维护消息的状态(比如是否取消)。使用一个非关系型数据库或集群来管理队列(比如Redis),同时有1到多个消息发送端来监听队列,将收到的队列中的消息进行转发,并更新Mysql中对应的记录(比如是否发送、发送次数和发送时间等)。这样,我们通过将消息保存入Mysql来增加数据的可靠性,通过增加消息发送端来加快消息的处理速度,增加吞吐量。同时,我们在消息发送端增加时间检查的逻辑,将到达预订时间的消息进行转发,将未到预订时间的消息重新放入队列中等待下次处理。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (3)
1.一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:具有如下流程;
A,消息发送端的处理流程为:
1)轮询并阻塞的从Redis以POP方式获取数据;
2)根据id从Mysql中获取消息的配置信息,如果状态为禁用,则抛弃当前消息,获取下一个消息进行操作;
如果状态为启用,但并未到达预订发送时间则将消息重新加入队列后处理下一条消息。如果状态为启用,并且已经到达预订时间,并且未达到发送次数上限则将消息发送出去,然后将发送状态、最后发送时间、实际发送次数保存入Mysql数据库,如果此消息需要周期发送,则再将次消息放入列表中等待下次处理;
B,消息接收端接收消息的流程为:
1)将收到的消息保存入Mysql;
2)将消息放入Redis队列;
3)返回消息的id是否成功;
C,消息接收端取消消息发送或定时消息的流程为:
根据消息id从Mysql检索消息,并将此消息状态设置为禁用,并返回是否成功
D,消息服务启动流程(如发生异常重启服务后恢复之前的任务):
1)检索Mysql中的消息状态,将未完成和未禁用的消息放入队列中等待处理。
2.根据权利要求1所述一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:Mysql中保存的数据包括:消息id(全局唯一)、消息内容、消息类型(消息的分类标志)、消息状态(包括启用、停用、完成)、消息创建时间、消息预计发送时间、消息预计发送次数、间隔时间、消息最后发送时间、消息实际发送次数。
3.根据权利要求1所述一种支持定时发送的具有高可靠性的消息管理方法,其特征在于:Redis中保存的内容为:消息id、消息内容、消息预计发送时间、消息类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213090.7A CN109298957A (zh) | 2018-10-18 | 2018-10-18 | 一种支持定时发送的具有高可靠性的消息管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811213090.7A CN109298957A (zh) | 2018-10-18 | 2018-10-18 | 一种支持定时发送的具有高可靠性的消息管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109298957A true CN109298957A (zh) | 2019-02-01 |
Family
ID=65157344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811213090.7A Pending CN109298957A (zh) | 2018-10-18 | 2018-10-18 | 一种支持定时发送的具有高可靠性的消息管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109298957A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287046A (zh) * | 2019-07-03 | 2019-09-27 | 浪潮云信息技术有限公司 | 基于队列的业务服务消息发送方法及系统 |
CN110347735A (zh) * | 2019-06-17 | 2019-10-18 | 平安普惠企业管理有限公司 | 配置化的数据转发异常补处理方法、装置及可读存储介质 |
CN110908815A (zh) * | 2019-12-03 | 2020-03-24 | 京东数字科技控股有限公司 | 消息队列数据预警方法、装置和系统、存储介质 |
CN111147355A (zh) * | 2019-12-25 | 2020-05-12 | 北京五八信息技术有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷系统本地数据缓存实时刷新的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN105812284A (zh) * | 2016-03-08 | 2016-07-27 | 上海畅星软件有限公司 | 高可靠性和稳定性的消息发送方法 |
CN106528306A (zh) * | 2016-11-08 | 2017-03-22 | 天津海量信息技术股份有限公司 | 消息队列的存储方法 |
US20180048587A1 (en) * | 2016-05-16 | 2018-02-15 | Yang Bai | Port switch service |
CN107948242A (zh) * | 2017-10-24 | 2018-04-20 | 上海金大师网络科技有限公司 | 多服务号模板消息发送方法及系统 |
CN108345635A (zh) * | 2017-12-29 | 2018-07-31 | 广州品唯软件有限公司 | 一种高可用的账单系统及账单生成处理方法 |
-
2018
- 2018-10-18 CN CN201811213090.7A patent/CN109298957A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516585A (zh) * | 2012-06-29 | 2014-01-15 | 北京奇虎科技有限公司 | 一种实现消息优先级分发的方法及系统 |
CN105812284A (zh) * | 2016-03-08 | 2016-07-27 | 上海畅星软件有限公司 | 高可靠性和稳定性的消息发送方法 |
US20180048587A1 (en) * | 2016-05-16 | 2018-02-15 | Yang Bai | Port switch service |
CN106528306A (zh) * | 2016-11-08 | 2017-03-22 | 天津海量信息技术股份有限公司 | 消息队列的存储方法 |
CN107948242A (zh) * | 2017-10-24 | 2018-04-20 | 上海金大师网络科技有限公司 | 多服务号模板消息发送方法及系统 |
CN108345635A (zh) * | 2017-12-29 | 2018-07-31 | 广州品唯软件有限公司 | 一种高可用的账单系统及账单生成处理方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347735A (zh) * | 2019-06-17 | 2019-10-18 | 平安普惠企业管理有限公司 | 配置化的数据转发异常补处理方法、装置及可读存储介质 |
WO2020253045A1 (zh) * | 2019-06-17 | 2020-12-24 | 平安普惠企业管理有限公司 | 配置化的数据转发异常补处理方法、装置及可读存储介质 |
CN110287046A (zh) * | 2019-07-03 | 2019-09-27 | 浪潮云信息技术有限公司 | 基于队列的业务服务消息发送方法及系统 |
CN110908815A (zh) * | 2019-12-03 | 2020-03-24 | 京东数字科技控股有限公司 | 消息队列数据预警方法、装置和系统、存储介质 |
CN111147355A (zh) * | 2019-12-25 | 2020-05-12 | 北京五八信息技术有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111966719A (zh) * | 2020-10-21 | 2020-11-20 | 四川新网银行股份有限公司 | 一种分布式消费信贷系统本地数据缓存实时刷新的方法 |
CN111966719B (zh) * | 2020-10-21 | 2021-07-13 | 四川新网银行股份有限公司 | 一种分布式消费信贷系统本地数据缓存实时刷新的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109298957A (zh) | 一种支持定时发送的具有高可靠性的消息管理方法 | |
CN102915374B (zh) | 一种控制数据库资源访问的方法、装置及系统 | |
CN102982141B (zh) | 一种实现分布式数据库代理的方法及装置 | |
US20070112944A1 (en) | Method and system for establishing a service-application execution environment in a hetergoneous, distributed computing system and a user-friendly data-transfer service application executing within the service-application execution environment | |
US9930632B2 (en) | M2M application remote registration method, device, system and storage medium | |
CN108108286A (zh) | 数据收集方法和装置、服务器、存储介质 | |
CN111555963A (zh) | 消息推送方法、装置、电子设备及存储介质 | |
CN111382985B (zh) | 待办消息集成推送系统和工作方法 | |
EP3062544B1 (en) | Method, node and system for managing resources of machine type communication application | |
US20180124168A1 (en) | Load balancing server for forwarding prioritized traffic from and to one or more prioritized auto-configuration servers | |
US20170279688A1 (en) | Method, device and system for providing device application software management service in internet of things | |
CN109462634A (zh) | 一种分布式系统中的消息处理方法、装置及设备 | |
US9262241B2 (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
US8458725B2 (en) | Computer implemented method for removing an event registration within an event notification infrastructure | |
CN103701720A (zh) | 与Socket服务器通信的方法、联机交易事务管理系统 | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
CN108011870B (zh) | 一种软件远程在线升级信息自动识别管理方法 | |
KR101853812B1 (ko) | 전자 기기의 식별자를 생성하는 방법과 전자 기기의 식별자를 이용한 정보 관리 방법. | |
WO2016110070A1 (zh) | 数据获取方法及装置、存储介质 | |
CN110535758A (zh) | 一种邮件处理方法及装置 | |
CN105281944B (zh) | 网络协议地址的设定方法及服务管理系统 | |
CN115412609A (zh) | 一种业务处理方法、装置、服务器及存储介质 | |
CN113535727B (zh) | 信息系统的数据输出方法及数据输出装置、电子设备 | |
CN111522803B (zh) | 软件服务化平台的租户交互方法、装置及电子设备 | |
CN108259236A (zh) | 服务器数据处理方法及系统 |
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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20230324 |