CN108874555A - 一种写消息至消息中间件的方法及装置 - Google Patents

一种写消息至消息中间件的方法及装置 Download PDF

Info

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
Application number
CN201810500714.7A
Other languages
English (en)
Inventor
刘德建
林伟
郭玉湖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN201810500714.7A priority Critical patent/CN108874555A/zh
Publication of CN108874555A publication Critical patent/CN108874555A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2871Implementation details of single intermediate entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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所述的写消息至消息中间件的装置,其特征在于,所述第一线程为一个或多个并发线程。
CN201810500714.7A 2018-05-23 2018-05-23 一种写消息至消息中间件的方法及装置 Pending CN108874555A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 武汉大学 一种面向微服务调用过程跟踪的监控系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
勒俊: "《高速铁路列车运行控制技术 调度集中系统》", 30 July 2017 *
曹学艳,张晓东: "《全媒体环境下的信息资源建设导论》", 30 June 2014, 电子科技大学出版社 *
赵文庆: "《UNIX和计算机软件技术基础》", 31 May 2011 *

Cited By (6)

* Cited by examiner, † Cited by third party
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