CN107688503A - 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 - Google Patents
一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN107688503A CN107688503A CN201710798426.XA CN201710798426A CN107688503A CN 107688503 A CN107688503 A CN 107688503A CN 201710798426 A CN201710798426 A CN 201710798426A CN 107688503 A CN107688503 A CN 107688503A
- Authority
- CN
- China
- Prior art keywords
- message
- memory space
- default memory
- processing
- handled
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备,所述方法包括:接收消息生成端发送的消息,将消息保存在预设存储空间;从预设存储空间获取该消息,使用第一线程对该消息进行处理;当对该消息处理失败时,从预设存储空间再次获取该消息,使用第二线程对该消息进行处理,直至对该消息处理成功或对所该消息的处理次数达到预设数量阈值。使得当对该消息处理失败时,不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备。
背景技术
ActiveMQ是应用广泛,性能强大的数据总线软件,在应用程序之间,或分布式系统中,用于消息的传递。并且,ActiveMQ可以应用在不同编程语言构成的运行环境下,所以当需要集成不同平台不同编程语言编写应用程序的时候,ActiveMQ拥有巨大优势,多种不同编程语言构成的客户端可以通过ActiveMQ发送和接收消息。
具体的,一台设备可以通过ActiveMQ作为消息生成端,生成消息,另一台设备可以作为消息接收端,通过ActiveMQ接收消息生成端生成的消息,并进行相应的处理。`
在消息传输过程中,消息生成端通过网络将消息发送至消息接收端,消息接收端获取消息后对消息进行相应处理,然而,消息接收端在对消息进行处理的过程中可能会发生错误,导致消息处理失败,使得该消息丢失或失效。
当消息处理失败时,ActiveMQ具有重试机制,消息生成端可以将消息重新发送至消息接收端。然而,在上述重试机制中,消息生成端在通过网络重新发送消息时,网络质量的好坏直接影响了ActiveMQ重试机制的响应速度。若网络质量不好,则消息接收端会延时收到重发的消息,进而降低了运行效率。并且,消息接收端通过ActiveMQ重试机制重新对消息进行处理时,无法对后续所获得的消息进行处理,如果发生多次重试会阻塞后续消息的及时处理,造成消息的积压。
发明内容
本发明实施例的目的在于提供一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备,以避免网络质量对于ActiveMQ重试机制的影响,并且避免消息的积压。具体技术方案如下:
本发明实施例公开了一种基于ActiveMQ数据总线的消息处理方法,应用于消息接收端,包括:
接收消息生成端发送的消息,将所述消息保存在预设存储空间;
从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
可选的,所述使用第一线程对所述消息进行处理之后,所述方法还包括:
当对所述消息处理成功时,将所述消息从所述预设存储空间删除。
可选的,所述方法还包括:
当所述消息接收端重新启动时,从所述预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。
可选的,所述预设存储空间至少包括:分布式数据库或本地磁盘。
可选的,接收消息生成端发送的消息之后,所述方法还包括:
向所述消息生成端发送确认报文。
本发明实施例公开了一种基于ActiveMQ数据总线的消息处理装置,应用于消息接收端,包括:
保存模块,用于接收消息生成端发送的消息,将所述消息保存在预设存储空间;
处理模块,从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
重试模块,当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
可选的,所述装置还包括:
删除模块,用于当对所述消息处理成功时,将所述消息从所述预设存储空间删除。
可选的,所述装置还包括:
回放模块,用于当所述消息接收端重新启动时,从所述预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。
可选的,所述的装置中的所述预设存储空间至少包括:分布式数据库或本地磁盘。
可选的,所述装置还包括:
发送模块,用于向所述消息生成端发送确认报文。
本发明实施例公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本发明实施例中的基于ActiveMQ数据总线的消息处理方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本发明实施例中的基于ActiveMQ数据总线的消息处理方法。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例中的基于ActiveMQ数据总线的消息处理方法。
本发明实施例提供的一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备,当接收到消息后将消息保存在预设存储空间,并使用第一线程对该消息进行处理,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的基于ActiveMQ数据总线的消息处理方法的流程图;
图2为本发明实施例提供的基于ActiveMQ数据总线的消息处理方法的另一种流程图;
图3为本发明实施例提供的基于ActiveMQ数据总线的消息处理方法的再一种流程图;
图4为本发明实施例提供的基于ActiveMQ数据总线的消息处理方法的再一种流程图;
图5为本发明实施例提供的基于ActiveMQ数据总线的消息处理装置的结构图;
图6为应用本发明实施例提供的基于ActiveMQ数据总线的消息处理装置的示意图;
图7为应用本发明实施例提供的电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例中,消息接收端可以为终端、服务器等设备,只要基于ActiveMQ数据总线进行消息传输和处理的设备,都可以作为消息接收端并应用本发明实施例提供的消息处理方法。
当消息接收端通过ActiveMQ接收到消息后,可以先将消息保存在预设存储空间,然后使用第一线程对该消息进行处理;当对该消息处理失败,发生消息丢失或失效时,可以直接从预设存储空间再次获取消息,并且使用第二线程对该消息进行处理,第二线程与第一线程为相互独立的并行的线程。从而可以实现对处理失败的消息的再次进行处理时,不会影响到对后续消息的处理,并且由于消息被存储于预设存储空间,不再需要从消息生成端重新发送该消息,避免传输消息的网络质量对消息进行重新处理时的影响。
参见图1,图1为本发明实施例提供的基于ActiveMQ数据总线的消息处理方法的流程图,应用于消息接收端,包括:
步骤101,接收消息生成端发送的消息,将消息保存在预设存储空间。
消息接收端可以是能够用于数据处理的电子设备,例如个人计算机或服务器等等。消息接收端可以通过ActiveMQ数据总线接收消息生成端发送的消息。其中消息可以是各种数据信息或控制信息,可以由消息生成端产生,并由消息接收端接收并进行相应的处理。
消息接收端接收到消息生成端发送的消息之后,可以将该消息首先保存在预设存储空间,而不是直接对该消息进行处理。预设存储空间能够持久的存储该消息,以保证该消息不会因为消息接收端宕机重启而造成该消息的丢失。
步骤102,从预设存储空间获取该消息,使用第一线程对该消息进行处理。
当将消息保存在预设存储空间之后,就可以从预设存储空间获取该消息。消息有各种不同的类型,例如,在ActiveMQ中,消息可以为TextMessage(文本消息)、MapMessage(映射消息)、ObjectMessage(目标消息)、BytesMessage(字节消息)、和StreamMessage(流消息)等。
从预设存储空间获取消息之后,可以使用第一线程,或第一进程,对该消息进行处理。具体的,对于消息的处理,在不同的应用场景下可以有不同的处理方式。
例如,ActiveMQ中的消息可以用于保证多台设备之间数据的一致性,当消息接收端获取该消息后,可以根据该消息中的内容,更新自身数据库中的数据。从而可以保证消息接收端和消息生成端的数据的一致性。
或者,消息也可以用于实时更新数据,消息接收端获取该消息后,可以根据该消息中的内容,在显示界面中,例如网页等页面,更新所显示的内容。
在实际应用中,对于消息的具体处理方式,可以根据实际业务需要进行配置,在此不做限定。
步骤103,当对该消息处理失败时,从预设存储空间再次获取该消息,使用第二线程对该消息进行处理,直至对该消息处理成功或对该消息的处理次数达到预设数量阈值。
在实际应用中,可能由于各种原因,使得消息处理失败。消息接收端在对消息进行处理时,可以对该消息是否处理失败进行判断。
例如,所获取的消息用于保证数据一致性时,当根据该消息进行了数据库中数据的更新后,可以对所更新的数据进行校验,可以判断所更新的数据的数据类型是否与所获取的消息中的一致,如果不一致则表示对该消息处理失败。
在实际应用时,在不同的应用场景中,对于消息是否处理失败的判断方式可能不同。只要能够确定出,对该消息进行处理后,所得到的处理结果与该消息本身或该消息中的内容不一致时,则可以认为对该消息的处理失败。
当对该消息处理失败时,消息接收端需要对该消息进行重试。
消息接收端可以从预设存储空间再次获取该消息,使用第二线程,同样的,也可以是第二进程,再次对该消息进行处理。
第二线程或第二进程是可以与第一线程或第一进程并行且各自独立的线程或进程,即第二线程与第一线程可以同时运行,第二进程与第一进程也可以同时运行。两个并行的进程或线程在同时运行时,可以同步或异步的处理不同的消息,两个进程或线程之间互不影响。第二线程或第二进程在可以直接从预设存储空间获取未处理成功的消息,并对该消息进行重试,不再需要依赖消息的传输网络从消息生成端再次发送该消息,所以可以无限次的获取该消息并对该消息进行重试,从而对该消息可以不存在重试次数的限制,实现无限次的重试。
通过第二线程或第二进程,可以对该消息进行处理,直至该消息处理成功,或者,由于该消息本身的问题也可以导致处理失败,所以当对该消息的处理达到预设数量阈值,可以放弃对该消息的处理。同时,可以向消息生成端发送预设信息,该预设信息用于通知消息生成端所发送的消息存在问题或缺陷,导致无法正常处理。其中,预设数量阈值可以根据实际应用情况进行配置,再次不做具体限定。
在本发明实施例中,可以当接收到消息后将消息保存在预设存储空间,并使用第一线程对该消息进行处理,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。
结合上述实施例,在本发明提供的又一实施例中,如图2所示,该方法还包括:
步骤104,当对消息处理成功时,将该消息从预设存储空间删除。
消息接收端接收到消息,并将消息存储至预设存储空间,若消息一直存储在预设存储空间,随着接收到越来越多的消息,会造成数据沉余,影响正常运行。所以,如果对该消息已经成功进行处理,则可以将该消息从预设存储空间删除,从而可以避免已经成功进行处理的消息继续占用预设存储空间,避免数据沉余。
结合上述实施例,在本发明提供的又一实施例中,如图3所示,该方法还包括:
步骤105,当消息接收端重新启动时,从预设存储空间获取预设时间段内的全部消息,并对全部消息进行处理。
在实际应用中,消息接收端不可避免的会由于各类因素,如断电、负载过高等,造成宕机或意外关机。当发生上述情况时,有可能会造成消息处理的异常中断,对消息的处理可能发生错误或异常。并且,在本发明实施例的另一种实现方式中,预设存储空间也可以为分布式数据库,该分布式数据库可能建立在消息接收端以外的其他设备上,并且可以不依赖消息接收端,自主的实现消息的接收和存储。当消息接收端无法进行消息处理时,依然可以实现消息的接收及存储。
所以当消息接收端重新启动时,需要重新对预设时间段内的全部消息重新进行处理,以保证在消息接收端宕机或关机期间所接收到的消息都可以得到处理,避免遗漏部分消息。同时也保证当发生宕机时,正在进行处理的消息可以重新进行处理,避免发生消息处理错误。
其中,预设时间段可以根据实际情况的需要进行配置,例如,预设时间段可以配置为重新启动后系统时间的前5分钟,从而保证该时间段内所接收的到全部消息都可以得到处理。
可选的,在本发明实施例提供的基于ActiveMQ数据总线的消息处理方法中,预设存储空间至少包括:分布式数据库或本地磁盘。
在本发明实施例中,预设存储空间可以有多种方式,在本发明实施例的一种实现方式中,预设存储空间可以是本地磁盘,当消息接收端接收了消息后,可以直接将消息存储在消息接收端的本地磁盘中,可以直接保存在本地磁盘的预设位置,也可以存储在本地磁盘中的本地数据库中。通过将消息保存在本地磁盘,可以使得对于消息的读取更加方便快捷。
在本发明实施例的另一种实施方式中,预设存储空间可以是分布式数据库,例如可以为redis数据库或hbase数据库等。当消息接收端接收了消息后,可以将接收到的消息通过分布式数据库的接口,存储于分布式数据库中,从而使得消息可以存储在消息接收端以外的其他物理位置,可以提高消息存储的安全性。
在本发明实施例的再一种实施方式中,分布式数据库也可以自主的接收并存储消息,当将消息存储后,再通过与消息接收端的接口通知消息接收端该消息已经成功存储,当消息接收端需要对该消息进行处理时,可以从该分布式数据库中获取该消息。使得当消息接收端出现宕机或其他意外情况时,不会影响消息的接收,避免消息的丢失。
结合上述的各实施例,在本发明提供的又一实施例中,如图4所示,在步骤101,接收消息生成端发送的消息之后,该方法还包括:
步骤100,向消息生成端发送确认报文。
当消息接收端成功接收了消息生成端发送的消息之后,可以向消息生成端发送确认报文,该确认报文可以用于通知消息生成端,消息接收端已经成功接收到了该所发送的消息。如果消息的生成端在发送消息之后的预设时长内,没有接收到该确认报文,可以再次向消息接收端发送该消息。其中确认报文可以是现有的任何类型的数据报文,只要满足本发明实施例中的作用,都可以应用于本发明实施例。
在本发明实施例中,通过向消息生成端发送确认报文,可以使得消息生成端得知消息接收端是否已经成功接收到该消息,当没有接收到该消息时,可以重新进行发送,从而可以保证消息接收端能够可靠的接收到消息,可以提高消息发送的成功率。
参见图5,图5为本发明实施例提供的基于ActiveMQ数据总线的消息处理装置的结构图,该装置应用于消息接收端,包括:
保存模块201,用于接收消息生成端发送的消息,将所述消息保存在预设存储空间;
处理模块202,从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
重试模块203,当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,并再次通过对与所述消息对应的处理方法,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
在本发明实施例中,可以当接收到消息后将消息保存在预设存储空间,并使用第一线程对该消息进行处理,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。
可选的,在本发明实施例提供的基于ActiveMQ数据总线的消息处理装置中,所述装置还包括:
删除模块,用于当对所述消息处理成功时,将所述消息从所述预设存储空间删除。
可选的,在本发明实施例提供的基于ActiveMQ数据总线的消息处理装置中,所述装置还包括:
回放模块,用于当所述消息接收端重新启动时,从所述预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。
可选的,在本发明实施例提供的基于ActiveMQ数据总线的消息处理装置中,所述的装置中的所述预设存储空间至少包括:分布式数据库或本地磁盘。
可选的,在本发明实施例提供的基于ActiveMQ数据总线的消息处理装置中,所述装置还包括:
发送模块,用于向所述消息生成端发送确认报文。
下面结合一个实例,具体介绍上述装置在实际应用时的作用。
参见图6,图6为应用本发明实施例提供的基于ActiveMQ数据总线的消息处理装置的示意图。在本发明实施例中,消息生成端205和消息接收端206属于一个分布式服务器集群,消息接收端206通过ActiveMQ的消息发布/订阅机制来订阅了消息生成端205的消息,消息接收端206通过消息生成端205所发布的消息,来维护自身数据库中的数据,保证数据一致性。
消息生成端205中数据库中数据发生变化时,可以向ActiveMQ发布一条消息,该消息中含有数据中变化数据的信息,如,变化后的数据的值,以及数据类型等等。ActiveMQ获取该消息后,可以向订阅了该消息生成端205消息的消息接收端206推送该消息。即消息生成端206通过ActiveMQ获取到了消息生成端205所发布的消息。
其中基于ActiveMQ数据总线的消息处理装置207部署在消息接收端206上,基于ActiveMQ数据总线的消息处理装置207中包括保存模块201、处理模块202、重试模块203、回放模块204,其中保存模块201可以集成该装置中的删除模块和发送模块。上述模块可以通过软件实现,也可以通过硬件实现,也可以通过软硬件结合的方式实现。
保存模块201接收消息生成端205发送的消息,并对该消息进行持久化,持久化是指将该消息保存在预设存储空间,从而可以持久的保存该消息。完成消息的持久化后,保存模块201可以向消息生成端205发送确认报文,该确认内报文可以为快速ACK(Acknowledgement,确认字符),该确认报文用于通知消息生成端205,所发送的消息已经被成功接收。
处理模块202预设存储空间获取该消息,可以采用回调的方式向消息接收端206推送该消息,回调的方式是指从消息接收端206,调用用于处理该消息程序或模块,并且使用第一线程对该消息进行处理。处理模块202也可以将该消息直接推送至消息接收端206中,通过消息接收端206直接对该消息进行处理。
消息接收端206对该消息的处理,可以是从该消息中获取数据库中所要更新的数据,然后使用该数据,替换消息接收端206的数据库中对应的数据,从而保证与消息生成端205数据库中的数据一致。当对数据库中的对应数据完成更新后,可以对该数据进行校验,例如,可以通过消息中的数据类型来检验所更新的数据的数据类型是否正确。对数据进行校验的方式有很多种,只要能够判断出所更新的数据是否与该消息中的数据是否一致即可。通过对数据的校验,可以判断出对该消息的处理是否成功。
当对该消息处理成功时,处理模块202可以向保存模块201发送第一报文,例如,第一报文可以为ACK.OK,该第一报文用于通知保存模块201该消息已经处理成功,保存模块201可以将该消息从预设存储空间删除,即对该消息去持久化。当对所述消息处理失败时,处理模块202可以向重试模块203发送第二报文,例如,第二报文可以为ACK.RETRY,该第二报文用于通知重试模块203,该消息处理失败,需要启动重试机制,再次对该消息进行处理。其中第一报文和第二报文可以是现有的任何类型的数据报文,只要满足本发明实施例中的作用,都可以应用于本发明实施例。
重试模块203接收到第二报文后,可以从预设存储空间再次获取该消息,并使用第二线程对该消息进行处理,对该消息在内存中实现轻量级的异步重试,即对该消息的重试与对其他消息的处理实现并行的处理,对该消息的重试不对阻塞对后续消息的正常处理。通过重试模块203可以对该消息的进行无限次的重试,直至对该消息处理成功或对该消息的处理次数达到预设数量阈值。
当消息接收端重新启动时,回放模块204可以从预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。具体的,回放模块204获取预设时间段内的全部消息后,可以将该全部消息逐条的推送至处理模块202,通过处理模块202对消息进行处理。
在本发明实施例中,通过各模块之间的配合,使得消息可以进行持久的保存,可以避免对消息处理失败时,从消息生成端205重新发送消息,从而避免网络质量对消息接收端206进行重试时的影响。并且通过处理模块202和重试模块203,可以实现对消息进行同步的处理,避免消息的积压。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
接收消息生成端发送的消息,将所述消息保存在预设存储空间;
从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
在本发明实施例中,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于ActiveMQ数据总线的消息处理方法。
在本发明实施例中,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于ActiveMQ数据总线的消息处理方法。
在本发明实施例中,当对该消息处理失败,可以直接从预设存储空间获取消息,并且使用第二线程对该消息进行处理。从而不再需要消息生成端重新发送消息,避免网络质量对消息接收端进行重试时的影响。并且由于采用的另外的线程对需要重试的消息进行处理,使得可以同时对后续获得的消息进行同步的处理,避免消息的积压。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
对于装置、电子设备、计算机可读存储介质及包含指令的计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (11)
1.一种基于ActiveMQ数据总线的消息处理方法,其特征在于,应用于消息接收端,包括:
接收消息生成端发送的消息,将所述消息保存在预设存储空间;
从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
2.根据权利要求1所述的方法,其特征在于,所述使用第一线程对所述消息进行处理之后,所述方法还包括:
当对所述消息处理成功时,将所述消息从所述预设存储空间删除。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述消息接收端重新启动时,从所述预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。
4.根据权利要求1所述的方法,其特征在于,所述预设存储空间至少包括:分布式数据库或本地磁盘。
5.根据权利要求1-4任一项所述的方法,其特征在于,接收消息生成端发送的消息之后,所述方法还包括:
向所述消息生成端发送确认报文。
6.一种基于ActiveMQ数据总线的消息处理装置,其特征在于,应用于消息接收端,包括:
保存模块,用于接收消息生成端发送的消息,将所述消息保存在预设存储空间;
处理模块,从所述预设存储空间获取所述消息,使用第一线程对所述消息进行处理;
重试模块,当对所述消息处理失败时,从所述预设存储空间再次获取所述消息,使用第二线程对所述消息进行处理,直至对所述消息处理成功或对所述消息的处理次数达到预设数量阈值。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
删除模块,用于当对所述消息处理成功时,将所述消息从所述预设存储空间删除。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
回放模块,用于当所述消息接收端重新启动时,从所述预设存储空间获取预设时间段内的全部消息,并对所述全部消息进行处理。
9.根据权利要求6所述的装置,其特征在于,所述的装置中的所述预设存储空间至少包括:分布式数据库或本地磁盘。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述装置还包括:
发送模块,用于向所述消息生成端发送确认报文。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710798426.XA CN107688503A (zh) | 2017-09-07 | 2017-09-07 | 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710798426.XA CN107688503A (zh) | 2017-09-07 | 2017-09-07 | 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107688503A true CN107688503A (zh) | 2018-02-13 |
Family
ID=61156192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710798426.XA Pending CN107688503A (zh) | 2017-09-07 | 2017-09-07 | 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107688503A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542643A (zh) * | 2018-11-16 | 2019-03-29 | 北京金山云网络技术有限公司 | 一种OpenStack系统中消息的恢复方法及装置 |
CN109714249A (zh) * | 2018-12-28 | 2019-05-03 | 武汉斗鱼网络科技有限公司 | 一种小程序消息的推送方法及相关装置 |
CN110519343A (zh) * | 2019-08-13 | 2019-11-29 | 创新奇智(北京)科技有限公司 | 一种基于日志的事件同步方法 |
CN110968387A (zh) * | 2019-10-29 | 2020-04-07 | 浙江口碑网络技术有限公司 | 消息处理方法、装置及电子设备 |
CN112181737A (zh) * | 2020-09-25 | 2021-01-05 | 中国建设银行股份有限公司 | 消息处理方法、装置、电子设备及介质 |
CN113176967A (zh) * | 2021-04-29 | 2021-07-27 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
-
2017
- 2017-09-07 CN CN201710798426.XA patent/CN107688503A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542643A (zh) * | 2018-11-16 | 2019-03-29 | 北京金山云网络技术有限公司 | 一种OpenStack系统中消息的恢复方法及装置 |
CN109542643B (zh) * | 2018-11-16 | 2021-04-30 | 北京金山云网络技术有限公司 | 一种OpenStack系统中消息的恢复方法及装置 |
CN109714249A (zh) * | 2018-12-28 | 2019-05-03 | 武汉斗鱼网络科技有限公司 | 一种小程序消息的推送方法及相关装置 |
CN109714249B (zh) * | 2018-12-28 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种小程序消息的推送方法及相关装置 |
CN110519343A (zh) * | 2019-08-13 | 2019-11-29 | 创新奇智(北京)科技有限公司 | 一种基于日志的事件同步方法 |
CN110519343B (zh) * | 2019-08-13 | 2020-12-04 | 创新奇智(北京)科技有限公司 | 一种基于日志的事件同步方法 |
CN110968387A (zh) * | 2019-10-29 | 2020-04-07 | 浙江口碑网络技术有限公司 | 消息处理方法、装置及电子设备 |
CN112181737A (zh) * | 2020-09-25 | 2021-01-05 | 中国建设银行股份有限公司 | 消息处理方法、装置、电子设备及介质 |
CN113176967A (zh) * | 2021-04-29 | 2021-07-27 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
CN113176967B (zh) * | 2021-04-29 | 2023-08-15 | 北京奇艺世纪科技有限公司 | 数据的处理方法及装置、电子设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688503A (zh) | 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备 | |
US11108726B2 (en) | Message queues for rapid re-hosting of client devices | |
WO2018177255A1 (zh) | 一种基于区块链的共识方法及装置 | |
US10237333B2 (en) | Network transfer of large files in unstable network environments | |
EP3258396A1 (en) | Data synchronization method, device and system | |
US11210257B2 (en) | Article, device, and techniques for serverless streaming message processing | |
CN109597717A (zh) | 一种数据备份、恢复方法、装置、电子设备及存储介质 | |
CN105159795A (zh) | 数据同步方法、装置和系统 | |
CN105323297B (zh) | 零数据丢失传输协议、用于数据同步的方法、系统和介质 | |
US11212175B2 (en) | Configuration management for cloud storage system and method | |
CN108874825B (zh) | 一种异常数据的校验方法和装置 | |
CN103631678A (zh) | 一种客户端软件的备份方法、还原方法和装置 | |
US20160088014A1 (en) | Methods, systems, and apparatus for mitigating network-based attacks | |
CN104965727A (zh) | 一种重启服务器的方法及装置 | |
WO2020211622A1 (zh) | 一种基于区块链的消息存储方法及装置 | |
US10318385B2 (en) | Service recovery using snapshots and interservice messages | |
US9069632B2 (en) | Message processing | |
CN104270287A (zh) | 一种报文乱序检测方法及装置 | |
US20130227027A1 (en) | Method, system and apparatus for managing electronic subscriptions at a communication device | |
CN112865927B (zh) | 消息送达验证方法、装置、计算机设备和存储介质 | |
CN106557262B (zh) | 一种数据处理方法及装置 | |
US10152490B2 (en) | Sequential replication with limited number of objects | |
CN102523205A (zh) | 内容校验和的确定方法及装置 | |
US11811894B2 (en) | Reduction of data transmissions based on end-user context | |
US9736098B2 (en) | Email-based software delivery |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180213 |
|
RJ01 | Rejection of invention patent application after publication |