CN108874555A - 一种写消息至消息中间件的方法及装置 - Google Patents
一种写消息至消息中间件的方法及装置 Download PDFInfo
- Publication number
- CN108874555A CN108874555A CN201810500714.7A CN201810500714A CN108874555A CN 108874555 A CN108874555 A CN 108874555A CN 201810500714 A CN201810500714 A CN 201810500714A CN 108874555 A CN108874555 A CN 108874555A
- Authority
- CN
- China
- Prior art keywords
- message
- oriented middleware
- local
- thread
- writing
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供的一种写消息至消息中间件的方法及装置,通过接收消息,并将所述消息存储至本地,创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,接口调用消息中间件时无需同步等待,从而解决了因为网络问题造成的延迟,增强了接口的可用性以及接口TPS数值。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种写消息至消息中间件的方法及装置。
背景技术
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户端和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。
现在消息中间件被使用在互联网的各个系统中,主要解决并发,解耦,异步等业务问题,使用范围广。但是由于各个系统都需要接入消息中间件,就会导致了各个系统也和消息中间件进行了交互操作,存在一定的耦合度。虽说消息中间件也是以集群方式部署,极少会出现宕机的情况,但是在使用过程中可能会存在网络问题或者其他问题,网络延迟,消息中间件响应慢等问题。由于现有技术中通常以普通队列存储消息,容易出现假溢出,采用同步调用机制,在接口中同步调用消息中间件发送消息,在异常情况下,就会存在一定的延时,会导致接口同步等待,影响使用效率以及接口TPS等情况。
发明内容
本发明所要解决的技术问题是:提供一种写消息至消息中间件的方法及装置,能够解决网络问题造成的延迟。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种写消息至消息中间件的方法,包括步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种写消息至消息中间件的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
本发明的有益效果在于:通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,接口调用消息中间件时无需同步等待,从而解决了因为网络问题造成的延迟,增强了接口的可用性以及接口TPS数值。
附图说明
图1为本发明实施例的写消息至消息中间件的方法流程图;
图2为本发明实施例的写消息至消息中间件的装置的结构示意图;
标号说明:
1、写消息至消息中间件的装置;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,从而解决了因为网络问题造成的延迟。
请参照图1,一种写消息至消息中间件的方法,包括步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
从上述描述可知,本发明的有益效果在于:通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,接口调用消息中间件时无需同步等待,从而解决了因为网络问题造成的延迟,增强了接口的可用性以及接口TPS数值。
进一步的,步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中。
由上述描述可知,通过将消息存储至环形队列中,而不是采用普通队列,可防止出现假溢出现象,节省队列空间,从而缓解本地数据量大的问题。
进一步的,步骤S1之前还包括:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量。
由上述描述可知,通过设置所述环形队列中存储单元的数量以适应不同的需求,适用性广。
进一步的,步骤S2之后还包括:
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
由上述描述可知,当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息,进一步缓解本地存储的压力,提高了本地存储的空间利用率。
进一步的,所述第一线程为一个或多个并发线程。
由上述描述可知,根据需要设置并发线程的数量,提高了从本地存储中消息写入消息中间件的效率。
请参照图2,一种写消息至消息中间件的装置1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现以下步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
从上述描述可知,本发明的有益效果在于:通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,接口调用消息中间件时无需同步等待,从而解决了因为网络问题造成的延迟,增强了接口的可用性以及接口TPS数值。
进一步的,步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中。
由上述描述可知,通过将消息存储至环形队列中,而不是采用普通队列,可防止出现假溢出现象,节省队列空间,从而缓解本地数据量大的问题。
进一步的,步骤S1之前还包括:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量。
由上述描述可知,通过设置所述环形队列中存储单元的数量以适应不同的需求,适用性广。
进一步的,步骤S2之后还包括:
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
由上述描述可知,当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息,进一步缓解本地存储的压力,提高了本地存储的空间利用率。
进一步的,所述第一线程为一个或多个并发线程。
由上述描述可知,根据需要设置并发线程的数量,提高了从本地存储中消息写入消息中间件的效率。
实施例一
请参照图1,一种写消息至消息中间件的方法,包括步骤:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量;
S1、接收消息,并将所述消息存储至本地;
步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,所述第一线程为一个或多个并发线程;
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
实施例二
本实施例将结合具体的应用场景,进一步的说明本发明上述的写消息至消息中间件的方法是如何实现的:
1.程序启动时,需要进行本地环形队列的初始化工作
设置环形队列为1000个存储单元,每个存储单元为一个存储数据节点,每次接收到的消息单独写入一个存储单元中;
2.接收消息,并将所述消息存储至本地内存中的环形队列
接收到消息后,根据预定的数据格式对所述消息进行组装,根据业务上的不同,进行不同的数据组装,比如传递进来的是一个登陆日志对象,会组装成:用户ID_用户名称_登陆类型_登陆时间这样格式的字符串,具体由业务自行定义,根据环形队列中的入队列的计算公式,计算当前消息入队列的位置,并将所述消息写入相应的存储单元中,并返回数据至前端,入队列和出队列位置的计算方法如下:
出队列:当队列不为空的时候,将队列的第一个元素出队列,用公式表示就是front=(front+1)%MAX_SIZE,然后返回该位置;
入队列:先判断front指针和rear指针是否直接相邻,若是,则表示队列已满,无法写入,否则,直接写入,且写入位置为:rear=(rear+1)%MAX_SIZE,其中front表示队列的前端,rear表示队列的后端,MAX_SIZE表示最大存储单元的数量;
3.读取环形队列中的消息,并将所述消息异步写入消息中间件
创建独立的第一线程,当程序启动时所述第一线程也启动,所述第一线程从本地内存中的环形队列中读取所述消息,并将所述消息异步写入消息中间件,所述第一线程为一个或多个并发线程;
4.当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息;
由于所述环形队列在本地内存中,如果本地装置断电或者宕机会导致本地内存数据丢失,因此会存在一定的数据丢失的风险,将可丢失的消息存储在本地内存中,可提高数据处理效率,比如登录消息以及一些操作日志等可丢失的非重要消息,而与金额或者其他业务上认为不可丢失的重要消息,需要业务系统进一步的进行特殊处理,如在本地磁盘中进行备份,或上传至云端。
实施例三
请参照图2,一种写消息至消息中间件的装置1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现以下步骤:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量;
S1、接收消息,并将所述消息存储至本地;
步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,所述第一线程为一个或多个并发线程;
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
综上所述,本发明提供的一种写消息至消息中间件的方法及装置,通过将消息存储至本地,并创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件,实现了装置和消息中间件的解耦,实现消息异步地写入消息中间件,接口调用消息中间件时无需同步等待,从而解决了因为网络问题造成的延迟,增强了接口的可用性以及接口TPS数值,通过将消息存储至环形队列中,而不是采用普通队列,可防止出现假溢出现象,节省队列空间,从而缓解本地数据量大的问题,当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息,进一步缓解本地存储的压力,提高了本地存储的空间利用率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种写消息至消息中间件的方法,其特征在于,包括步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
2.根据权利要求1所述的写消息至消息中间件的方法,其特征在于,步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中。
3.根据权利要求2所述的写消息至消息中间件的方法,其特征在于,步骤S1之前还包括:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量。
4.根据权利要求1所述的写消息至消息中间件的方法,其特征在于,步骤S2之后还包括:
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
5.根据权利要求1所述的写消息至消息中间件的方法,其特征在于,所述第一线程为一个或多个并发线程。
6.一种写消息至消息中间件的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
S1、接收消息,并将所述消息存储至本地;
S2、创建第一线程,所述第一线程从本地读取所述消息,并将所述消息异步写入消息中间件。
7.根据权利要求6所述的写消息至消息中间件的装置,其特征在于,步骤S1所述将所述消息存储至本地具体为:
将所述消息存储至本地环形队列中。
8.根据权利要求7所述的写消息至消息中间件的装置,其特征在于,步骤S1之前还包括:
S0、对所述环形队列进行初始化,设置所述环形队列中存储单元的数量。
9.根据权利要求6所述的写消息至消息中间件的装置,其特征在于,步骤S2之后还包括:
S3、当所述第一线程成功将消息异步写入消息中间件时,则删除本地存储的所述消息。
10.根据权利要求6所述的写消息至消息中间件的装置,其特征在于,所述第一线程为一个或多个并发线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500714.7A CN108874555A (zh) | 2018-05-23 | 2018-05-23 | 一种写消息至消息中间件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500714.7A CN108874555A (zh) | 2018-05-23 | 2018-05-23 | 一种写消息至消息中间件的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874555A true CN108874555A (zh) | 2018-11-23 |
Family
ID=64333313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810500714.7A Pending CN108874555A (zh) | 2018-05-23 | 2018-05-23 | 一种写消息至消息中间件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874555A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109873904A (zh) * | 2019-03-05 | 2019-06-11 | 平安科技(深圳)有限公司 | 消息推送的用户消息状态上报处理方法、装置及存储介质 |
CN110149382A (zh) * | 2019-05-08 | 2019-08-20 | 拉扎斯网络科技(上海)有限公司 | 数据同步的方法、系统、主服务器、同步客户端及介质 |
CN111949654A (zh) * | 2020-07-20 | 2020-11-17 | 上海淇馥信息技术有限公司 | 一种基于用户标签的快速查询方法、系统和电子设备 |
CN113776503A (zh) * | 2018-12-29 | 2021-12-10 | 深圳市道通智能航空技术股份有限公司 | 一种深度图处理方法、装置和无人机 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080177690A1 (en) * | 2006-01-19 | 2008-07-24 | Mhave, Llc. | Rules Engine for Enterprise System |
CN101519078A (zh) * | 2009-03-13 | 2009-09-02 | 国电南瑞科技股份有限公司 | 综合监控系统多区域数据同步方法 |
CN102760126A (zh) * | 2011-04-26 | 2012-10-31 | 阿里巴巴集团控股有限公司 | 一种分布式系统中的数据同步方法和分布式系统 |
CN103488690A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
US8959530B1 (en) * | 2013-05-07 | 2015-02-17 | Sprint Communications Company L.P. | Messaging middleware processing thread count based events |
CN106201443A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于Storm流式计算框架多并发写文件的方法及系统 |
CN107766205A (zh) * | 2017-10-10 | 2018-03-06 | 武汉大学 | 一种面向微服务调用过程跟踪的监控系统及方法 |
-
2018
- 2018-05-23 CN CN201810500714.7A patent/CN108874555A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080177690A1 (en) * | 2006-01-19 | 2008-07-24 | Mhave, Llc. | Rules Engine for Enterprise System |
CN101519078A (zh) * | 2009-03-13 | 2009-09-02 | 国电南瑞科技股份有限公司 | 综合监控系统多区域数据同步方法 |
CN102760126A (zh) * | 2011-04-26 | 2012-10-31 | 阿里巴巴集团控股有限公司 | 一种分布式系统中的数据同步方法和分布式系统 |
US8959530B1 (en) * | 2013-05-07 | 2015-02-17 | Sprint Communications Company L.P. | Messaging middleware processing thread count based events |
CN103488690A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN106201443A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于Storm流式计算框架多并发写文件的方法及系统 |
CN107766205A (zh) * | 2017-10-10 | 2018-03-06 | 武汉大学 | 一种面向微服务调用过程跟踪的监控系统及方法 |
Non-Patent Citations (3)
Title |
---|
勒俊: "《高速铁路列车运行控制技术 调度集中系统》", 30 July 2017 * |
曹学艳,张晓东: "《全媒体环境下的信息资源建设导论》", 30 June 2014, 电子科技大学出版社 * |
赵文庆: "《UNIX和计算机软件技术基础》", 31 May 2011 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113776503A (zh) * | 2018-12-29 | 2021-12-10 | 深圳市道通智能航空技术股份有限公司 | 一种深度图处理方法、装置和无人机 |
CN113776503B (zh) * | 2018-12-29 | 2024-04-12 | 深圳市道通智能航空技术股份有限公司 | 一种深度图处理方法、装置和无人机 |
CN109873904A (zh) * | 2019-03-05 | 2019-06-11 | 平安科技(深圳)有限公司 | 消息推送的用户消息状态上报处理方法、装置及存储介质 |
CN109873904B (zh) * | 2019-03-05 | 2021-08-03 | 平安科技(深圳)有限公司 | 消息推送的用户消息状态上报处理方法、装置及存储介质 |
CN110149382A (zh) * | 2019-05-08 | 2019-08-20 | 拉扎斯网络科技(上海)有限公司 | 数据同步的方法、系统、主服务器、同步客户端及介质 |
CN111949654A (zh) * | 2020-07-20 | 2020-11-17 | 上海淇馥信息技术有限公司 | 一种基于用户标签的快速查询方法、系统和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874555A (zh) | 一种写消息至消息中间件的方法及装置 | |
US10528405B2 (en) | Methods, apparatus and computer programs for managing persistence | |
CN108848039B (zh) | 服务器、消息分配的方法及存储介质 | |
US10341196B2 (en) | Reliably updating a messaging system | |
CN101996098B (zh) | 管理消息队列 | |
US9405574B2 (en) | System and method for transmitting complex structures based on a shared memory queue | |
CN103516580B (zh) | 一种基于消息队列实现消息接收与转发的方法及系统 | |
CN109347757A (zh) | 消息拥塞控制方法、系统、设备及存储介质 | |
JPH0776939B2 (ja) | 通信ネットワークシステム | |
CN108762953B (zh) | 一种消息队列实现方法 | |
CN103701720A (zh) | 与Socket服务器通信的方法、联机交易事务管理系统 | |
CN117573355A (zh) | 任务处理方法、装置、电子设备以及存储介质 | |
CN110515749B (zh) | 信息发送的队列调度的方法、装置、服务器和存储介质 | |
CN108958903A (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
KR20080059934A (ko) | 논 블록킹 입출력을 이용한 서버의 쓰레드 관리 방법 및시스템 | |
CN104166820A (zh) | 一种数据管理方法和系统 | |
CN110162415B (zh) | 用于处理数据请求的方法、服务器、装置及存储介质 | |
CN111061474B (zh) | 一种Lamda编程装置及其数据处理方法 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
CN106161572A (zh) | 一种服务的调用方法和服务器 | |
CN114116258B (zh) | 队列管理器热备方法、系统、终端及存储介质 | |
US20090217294A1 (en) | Single program call message retrieval | |
CN115567459B (zh) | 一种基于缓冲区的流量控制系统与方法 | |
CN116932233B (zh) | 一种智能合约的微服务架构 | |
CN115885262A (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 |