CN105740083A - 消息处理方法、装置及系统 - Google Patents
消息处理方法、装置及系统 Download PDFInfo
- Publication number
- CN105740083A CN105740083A CN201610058201.6A CN201610058201A CN105740083A CN 105740083 A CN105740083 A CN 105740083A CN 201610058201 A CN201610058201 A CN 201610058201A CN 105740083 A CN105740083 A CN 105740083A
- Authority
- CN
- China
- Prior art keywords
- message
- state
- packet
- server
- message packet
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种消息处理装置、方法及系统,应用于数据库,属于通信技术领域。该装置包括:保存模块,用于保存从消息接收服务器获取的至少一个消息报文及其相关数据;检测模块,用于检测消息处理服务器中所述消息报文的处理状态;消息状态处理模块,用于当检测消息处理服务器成功处理消息报文对应的数据时,将与消息报文对应的状态值由第一状态改为第二状态。从而能够及时保存消息接收服务器写入的消息报文,并能够根据消息报文的处理状态,及时修改储存的状态值,避免数据丢失。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种消息处理方法、装置及系统。
背景技术
在大并发消息处理系统中,一般使用消息中间件(messageorientedmiddleware)来异步处理请求,以起到消除请求高峰的目的,同时提高系统稳定性和吞吐量。例如,在电商的仓储服务器,使用RabbitMQ作为消息中间件接收顺丰等公司的仓储服务器推送给仓储服务器的消息报文,然后转发给消息处理服务器。当消息应答设置为自动应答时,RabbitMQ将接收到的消息推送给消息处理服务器后就将消息数据从消息队列中删除,当消息处理服务器在处理消息报文时,一旦仓储服务器或者消息处理服务器出现宕机,则消息数据将丢失。
由此,有必要提供一种消息处理方法、装置及系统,避免上述情况的出现,能够及时保存消息报文并记录消息数据的处理状态。
发明内容
本发明的主要目的在于提出一种消息处理方法、装置及系统,旨在解决现有技术中由于不能及时保存消息,而在系统宕机时出现的丢失消息数据的问题。
为实现上述目的,本发明提供的一种消息处理装置,应用于数据库,所述装置包括:保存模块,用于保存从消息接收服务器获取的至少一个消息报文及其相关数据;检测模块,用于检测消息处理服务器中所述消息报文的处理状态;消息状态处理模块,用于当检测消息处理服务器成功处理所述消息报文对应的数据时,将与所述消息报文对应的状态值由第一状态改为第二状态。
可选地,所述装置还包括:提取模块,用于提取状态值为第一状态的消息报文;消息推送模块,用于将所述消息报文推送至消息接收服务器,经由消息中间件转发至所述消息处理服务器,以使所述消息处理服务器对所述消息报文进行业务处理。
可选地,所述相关数据至少包括发送时间戳,所述装置还包括:侦测模块,用于侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机;相应地,所述提取模块具体用于当宕机的所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一重新启动时,提取状态值为第一状态且所述发送时间戳在宕机之前的消息报文,并将提取的所述消息报文通过所述消息推送模块推送至所述消息接收服务器。
可选地,所述装置还包括:删除模块,用于删除状态值为第二状态的消息报文及其数据。
此外,为实现上述目的,本发明还提出一种消息处理系统,所述系统包括:消息接收服务器,用于接收至少一个消息报文,并将所述至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态;所述数据库,用于保存从所述消息接收服务器获取的所述至少一个消息报文及其相关数据;消息处理服务器,用于从所述消息中间件提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
此外,为实现上述目的,本发明还提出一种消息处理方法,应用于数据库,所述方法包括:保存从消息接收服务器获取的至少一个消息报文及其相关数据;检测消息处理服务器中所述消息报文的处理状态;当检测消息处理服务器成功处理所述消息报文对应的数据时,将与所述消息报文对应的状态值由第一状态改为第二状态。
可选地,所述方法还包括:提取状态值为第一状态的消息报文;将所述消息报文推送至消息接收服务器,经由消息中间件转发至所述消息处理服务器,以使所述消息处理服务器对所述消息报文进行业务处理。
可选地,所述相关数据至少包括发送时间戳,所述方法具体包括:侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机;当宕机的所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一重新启动时,提取状态值为第一状态且所述发送时间戳为宕机之前的消息报文,并将提取的所述消息报文推送至所述消息接收服务器。
可选地,所述方法还包括:删除状态值为第二状态的消息报文及其数据。
此外,为实现上述目的,本发明还提出一种消息处理方法,所述方法包括步骤:接收至少一个消息报文;将所述至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态;保存从所述消息接收服务器获取的所述至少一个消息报文及其相关数据;以及从所述消息中间件提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
本发明提出的消息处理方法、装置及系统,通过保存模块保存从消息接收服务器获取的至少一个消息报文及其相关数据,检测模块检测消息处理服务器中所述消息报文的处理状态,以及当检测消息处理服务器成功处理所述消息报文对应的数据时,消息状态处理模块将与所述消息报文对应的状态值由第一状态改为第二状态。从而能够及时保存消息接收服务器写入的消息报文,并能够根据消息报文的处理状态,及时修改储存的状态值,避免数据丢失。
附图说明
图1为实现本发明各个实施例的消息处理系统的结构示意图;
图2为本发明第一实施例提供的消息处理系统的另一结构示意图;
图3为本发明第二实施例提供的消息处理装置的模块示意图;
图4为本发明第三实施例提供的消息处理装置的模块示意图;
图5为本发明第四实施例提供的消息处理方法的流程示意图;
图6为本发明第四实施例提供的消息处理方法的另一流程示意图;
图7为本发明第五实施例提供的消息处理方法的流程示意图;
图8为本发明第六实施例提供的消息处理方法的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。
图1为实现本发明各个实施例的消息处理系统的结构示意图。
消息处理系统包括消息接收服务器100、消息中间件200、数据库300和消息处理服务器400。其中:
消息接收服务器100,用于接收至少一个消息报文,并将所述至少一个消息报文依次发送给消息中间件200的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库300,默认所述状态值为第一状态。具体地,消息接收服务器100在接收至少一个消息报文后,消息接收服务器100将至少一个消息报文及其对应的状态值按照顺序依次发送给消息中间件200。与此同时,消息接收服务器100还将上述至少一个消息报文及其对应的状态值写入数据库300,并设置与每个消息报文对应的消息数据的状态值,以记录该消息的处理状态,默认所述状态值为第一状态。
进一步地,消息接收服务器100还向数据库300写入与消息报文相关的其他数据,该其他数据包括但不限于发送时间戳等。
应理解,第一状态代表与之对应的消息报文为未处理状态,第二状态代表与之对应的消息报文为已处理状态。在其他实施例中,也可以设置默认状态值为“0”,代表与之对应的消息报文为未处理状态。当该消息报文被成功处理时,则状态值由“0”变为“1”。
消息中间件200,用于接收来自于消息接收服务器100发送的至少一个消息报文,并组成消息队列。
进一步地,消息中间件200为RabbitMQ。相应地,消息接收服务器100按照指定的交换机和路由键发送到RabbitMQ的对应消息队列中,且相关数据还包括交换机名称、路由键等。
数据库300,用于保存从所述消息接收服务器100获取的所述至少一个消息报文及其相关数据。
进一步地,数据库300为NoSQL数据库,以保存消息报文、状态值、发送时间戳、交换机名称、路由键等。
消息处理服务器400,用于从所述消息中间件200提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
进一步地,当业务处理失败时,则响应的消息报文对应的状态值依然为第一状态。
请结合图2,作为本发明的进一步改进,若消息接收服务器100、消息中间件200及消息处理服务器400之一出现宕机的情况,则消息处理系统暂停进行消息数据交互,直至出现宕机的消息接收服务器100、消息中间件200及消息处理服务器400之一重新启动时,消息接收服务器100启动消息恢复任务,数据库300向消息接收服务器100推送消息报文。
具体地,数据库300提取状态值为第一状态且发送时间戳是宕机之前的消息报文,并将符合要求的所有消息报文重新发送给消息接收服务器100,从而避免了消息数据丢失的情况发生。
消息接收服务器100在从数据库300中获取状态值为第一状态的消息报文之后,对消息报文数据进行解析处理,并将解析处理后的消息报文依据指定的交换机和路由键重新推送到消息中间件200对应的消息队列中。
消息处理服务器400从消息中间件200提取相应的消息报文进行业务处理,当业务处理成功时,数据库300中的该消息报文状态值由第一状态改为第二状态。
为了使本实施例的消息处理过程更加清楚易懂,以下以在电商系统中进行消息处理为例加以说明。
在本例中,消息接收服务器100为电商A仓储服务器,消息中间件200为RabbitMQ,数据库300为NoSQL,消息处理服务器400为电商A消息处理服务器。
电商A仓储服务器接收订单消息报文a、订单消息报文b和订单消息报文c,订单消息报文a包括订单号a,订单消息报文b包括订单号b,订单消息报文c包括订单号c。
电商A仓储服务器分别将订单消息报文a按照交换机a和路由键a发送到RabbitMQ的消息队列中,将订单消息报文b按照交换机b和路由键b发送到RabbitMQ的消息队列中,将订单消息报文c按照交换机c和路由键c发送到RabbitMQ的消息队列中。同时,以订单号为索引,分别设置与订单消息报文a、订单消息报文b和订单消息报文c相对应的状态值为第一状态,并将订单消息报文a、订单号a、交换机a、路由键a、发送时间戳a、和第一状态状态值写入NoSQL,将订单消息报文b、订单号b、交换机b、路由键b、发送时间戳b、和第一状态状态值写入NoSQL,将订单消息报文c、订单号c、交换机c、路由键c、发送时间戳c、和第一状态状态值写入NoSQL。
电商A消息处理服务器从RabbitMQ消息队列中获取订单消息报文a和订单消息报文b进行业务处理。电商A消息处理服务器对订单消息报文a的业务处理成功,则NoSQL通过搜索订单号a,将与订单消息报文a对应的状态值改为第二状态。电商A消息服务器对订单消息报文b的业务处理失败,则NoSQL不需要进行搜索,或者,NoSQL通过搜索订单号b,保留与订单消息报文b对应的状态值依然为第一状态。由于电商A消息处理服务器未对订单消息报文c进行业务处理,则NoSQL中与订单消息报文c对应的状态值也依然为第一状态。
若此时电商A消息服务器出现宕机,待电商A消息服务器重新启动消息恢复任务时,从NoSQL中获取状态值为第一状态的订单消息报文b和订单消息报文c,并对订单消息报文b和订单消息报文c对应的数据进行解析处理。将解析好的数据,将订单消息报文b依据交换机b、路由键b发送至RabbitMQ消息队列中,将订单消息报文c依据交换机c、路由键c发送至RabbitMQ消息队列中,以使电商A消息处理服务器对订单消息报文b或者/和订单消息报文c进行业务处理。
本实施例的消息处理系统,通过消息接收服务器100接收至少一个消息报文,并将至少一个消息报文依次发送给消息中间件200的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库300,默认所述状态值为第一状态,消息处理服务器400从消息中间件200提取所述消息报文进行业务处理,当业务处理成功时,状态值改为第二状态。从而本实施例的消息处理系统能够及时保存消息接收服务器100写入的消息报文,即便在出现宕机的情况下,也不会丢失数据,并能够根据消息报文的处理状态,及时修改储存的状态值,以方便日后提取等操作。
请参照图3,本发明第二实施例进一步提供一种消息处理装置,应用于数据库300,在本实施例中,数据库300可以为NoSQL数据库。所述消息处理装置包括:
保存模块310,用于保存从消息接收服务器100获取的至少一个消息报文及其相关数据。
具体地,该相关数据包括消息接收服务器100设置的与消息报文对应的状态值,该状态值默认为第一状态,当消息接收服务器100将至少一个消息报文及其状态值写入保存模块310时,保存模块310保存至少一个消息报文及其状态值。
在其他实施例中,消息接收服务器100在向保存模块310写入数据信息的同时,还将消息报文按照指定的交换机及路由键发送给消息中间件200的消息队列中,相应地,保存模块310还保存所述指定的交换机及路由键。
在本实施例中,消息中间件200可以为RabbitMQ。
检测模块320,用于检测消息处理服务器400的业务处理状态。
消息状态处理模块330,用于当检测消息处理服务器400成功处理所述消息报文对应的数据时,将与所述消息报文对应的状态值由第一状态改为第二状态。
具体地,消息状态处理模块330响应检测模块320对消息处理服务器400的检测。当检测某一消息报文的业务处理成功时,则消息状态处理模块330将与该消息报文对应的状态值由第一状态改为第二状态;当检测某一消息报文的业务处理失败时,则消息状态处理模块330不做处理,即该消息报文对应的状态值依然为第一状态。
提取模块340,用于提取状态值为第一状态的消息报文。
进一步地,提取模块340响应于某一特定的指令或场景而进行自动提取,例如:出现系统宕机等情况。
消息推送模块350,用于将所述消息报文推送至消息接收服务器100,经由消息中间件200转发至所述消息处理服务器400,以使所述消息处理服务器400对所述消息报文进行业务处理。
具体地,消息推送模块350将提取模块340提取的所有第一状态的消息报文推送给消息接收服务器100。消息接收服务器100将至少一个第一状态的消息报文按照指定的交换机和路由键发送给消息中间件200(RabbitMQ)的消息队列中,且消息中间件200将至少一个第一状态的消息报文推送至消息处理器400,以使所述消息处理服务器400对所述消息报文进行业务处理。
本实施例的消息处理装置,通过保存模块310保存从消息接收服务器100获取的至少一个消息报文及其相关数据,检测模块320检测消息处理服务器400的业务处理状态,当检测消息处理服务器400成功处理所述消息报文对应的数据时,消息状态处理模块330将与所述消息报文对应的状态值由第一状态改为第二状态,当提取模块340提取状态值为第一状态的消息报文,消息推送模块350将消息报文推送至消息接收服务器100,经由消息中间件200转发至消息处理服务器400,以使消息处理服务器400对消息报文进行业务处理。从而本实施例的消息处理装置能够及时保存消息接收服务器100写入的消息报文,能够根据消息报文的处理状态,及时修改储存的状态值。
请参照图4,本发明第三实施例进一步提供一种消息处理装置。在第三实施例中,所述消息处理装置与第二实施例的区别仅在于,还包括:
侦测模块410,用于侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机。
相应地,所述提取模块340具体用于当宕机的所述消息接收服务器100、所述消息中间件200、以及所述消息处理服务器400之一重新启动时,提取状态值为第一状态且所述发送时间戳在宕机之前的消息报文及其相应的数据,并将提取的第一状态的消息报文及其相应的数据通过所述消息推送模块350推送至所述消息接收服务器100。
可选地,作为本发明的进一步改进,本实施例的消息处理装置还可以包括删除模块420,用于删除状态值为第二状态的消息报文及其数据。
具体地,删除模块420可以通过搜索订单号找到状态值为第二状态的消息报文及其所有数据,将其删除;也可以直接提取状态值为第二状态的消息报文及其所有进行删除,以清理数据库300内不必要的数据垃圾。
本实施例的消息处理装置,通过侦测模块410侦测消息接收服务器100、消息中间件200、以及消息处理服务器400之一出现宕机,则当宕机的消息接收服务器、消息中间件、以及消息处理服务器之一重新启动时,提取模块340提取状态值为第一状态且发送时间戳在宕机之前的消息报文,并通过消息推送模块350推送至述消息接收服务器。即便在出现宕机的情况下,本实施例的消息处理装置也不会将数据丢失,且通过删除模块420将状态值为第二状态的消息报文及其数据进行删除,清理了不必要的数据垃圾、提高了系统的整体性能。
本发明第四实施例进一步提供了一种消息处理方法,请参照图5,所述方法包括步骤:
S510、接收至少一个消息报文;
S520、将所述至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态;
具体地,消息接收服务器接收至少一个消息报文后,将至少一个消息报文及其对应的状态值按照顺序依次发送给消息中间件。
与此同时,消息接收服务器还将上述至少一个消息报文及其对应的状态值写入数据库,并设置与每个消息报文对应的消息数据的状态值,以记录该消息的处理状态,默认所述状态值为第一状态。
进一步地,消息接收服务器还向数据库写入与消息报文相关的其他数据,该其他数据包括但不限于发送时间戳等。
应理解,第一状态代表与之对应的消息报文为未处理状态,第二状态代表与之对应的消息报文为已处理状态。
进一步地,消息中间件可以为RabbitMQ。相应地,消息接收服务器按照指定的交换机和路由键发送到RabbitMQ的对应消息队列中,则相关数据还包括交换机名称、路由键等。
在其他实施例中,也可以设置默认状态值为“0”,代表与之对应的消息报文为未处理状态。当该消息报文被成功处理时,则状态值由“0”变为“1”。
S530、保存从所述消息接收服务器获取的所述至少一个消息报文及其相关数据;
具体地,数据库为NoSQL数据库,以保存消息报文、状态值、发送时间戳、交换机名称、路由键等。
S540、从所述消息中间件提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
进一步地,当业务处理失败时,则响应的消息报文对应的状态值依然为第一状态。
请参照图6,作为本发明的进一步改进,若消息接收服务器、消息中间件及消息处理服务器之一出现宕机的情况,则消息处理系统暂停进行消息数据交互,直至出现宕机的消息接收服务器、消息中间件及消息处理服务器之一重新启动时,消息接收服务器启动消息恢复任务,所述消息处理方法包括步骤:
S610、提取状态值为第一状态且发送时间戳是宕机之前的消息报文,并将符合要求的所有消息报文重新发送给消息接收服务器,从而避免了消息数据丢失的情况发生;
S620、消息接收服务器对消息报文数据进行解析处理,并将解析处理后的消息报文依据指定的交换机和路由键重新推送到消息中间件对应的消息队列中;
S630、消息处理服务器从消息中间件提取相应的消息报文进行业务处理;
S640、检测业务处理成功,则数据库中的该消息报文状态值由第一状态改为第二状态。
为了使本实施例的消息处理过程更加清楚易懂,以下以在电商系统中进行消息处理为例加以说明。
在本例中,消息接收服务器100为电商A仓储服务器,消息中间件200为RabbitMQ,数据库300为NoSQL,消息处理服务器400为电商A消息处理服务器。
电商A仓储服务器接收订单消息报文a、订单消息报文b和订单消息报文c,订单消息报文a包括订单号a,订单消息报文b包括订单号b,订单消息报文c包括订单号c。
电商A仓储服务器分别将订单消息报文a按照交换机a和路由键a发送到RabbitMQ的消息队列中,将订单消息报文b按照交换机b和路由键b发送到RabbitMQ的消息队列中,将订单消息报文c按照交换机c和路由键c发送到RabbitMQ的消息队列中。同时,以订单号为索引,分别设置与订单消息报文a、订单消息报文b和订单消息报文c相对应的状态值为第一状态,并将订单消息报文a、订单号a、交换机a、路由键a、发送时间戳a、和第一状态状态值写入NoSQL,将订单消息报文b、订单号b、交换机b、路由键b、发送时间戳b、和第一状态状态值写入NoSQL,将订单消息报文c、订单号c、交换机c、路由键c、发送时间戳c、和第一状态状态值写入NoSQL。
电商A消息处理服务器从RabbitMQ消息队列中获取订单消息报文a和订单消息报文b进行业务处理。电商A消息处理服务器对订单消息报文a的业务处理成功,则NoSQL通过搜索订单号a,将与订单消息报文a对应的状态值改为第二状态。电商A消息服务器对订单消息报文b的业务处理失败,则NoSQL不需要进行搜索,或者,NoSQL通过搜索订单号b,保留与订单消息报文b对应的状态值依然为第一状态。由于电商A消息处理服务器未对订单消息报文c进行业务处理,则NoSQL中与订单消息报文c对应的状态值也依然为第一状态。
若此时电商A消息服务器出现宕机,待电商A消息服务器重新启动消息恢复任务时,从NoSQL中获取状态值为第一状态的订单消息报文b和订单消息报文c,并对订单消息报文b和订单消息报文c对应的数据进行解析处理。将解析好的数据,将订单消息报文b依据交换机b、路由键b发送至RabbitMQ消息队列中,将订单消息报文c依据交换机c、路由键c发送至RabbitMQ消息队列中,以使电商A消息处理服务器对订单消息报文b或者/和订单消息报文c进行业务处理。
本实施例的消息处理方法,通过接收至少一个消息报文,并将至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态,保存获取的至少一个消息报文及其相关数据,从消息中间件提取所述消息报文进行业务处理,当业务处理成功时,状态值改为第二状态。从而本实施例的消息处理方法能够及时保存消息接收服务器写入的消息报文,即便在出现宕机的情况下,也不会丢失数据,并能够根据消息报文的处理状态,及时修改储存的状态值,以方便日后提取等操作。
请参照图7,本发明第五实施例在第四实施例的基础上进一步提供一种消息处理方法,应用于数据库,在本实施例中,数据库可以为NoSQL数据库。所述消息处理方法包括步骤:
S710、保存从消息接收服务器获取的至少一个消息报文及其相关数据;
具体地,该相关数据包括消息接收服务器设置的与消息报文对应的状态值,该状态值默认为第一状态,当消息接收服务器将至少一个消息报文及其状态值写入数据库时,数据库保存至少一个消息报文及其状态值。
在其他实施例中,消息接收服务器在向数据库写入数据信息的同时,还将消息报文按照指定的交换机及路由键发送给消息中间件的消息队列中,相应地,数据库还保存所述指定的交换机及路由键。
在本实施例中,消息中间件可以为RabbitMQ。
S720、检测消息处理服务器中所述消息报文的处理状态;
S730、检测消息处理服务器成功处理所述消息报文对应的数据,将与所述消息报文对应的状态值由第一状态改为第二状态;
具体地,当检测某一消息报文的业务处理成功时,则将与该消息报文对应的状态值由第一状态改为第二状态;当检测某一消息报文的业务处理失败时,则不做处理,即该消息报文对应的状态值依然为第一状态。
S740、提取状态值为第一状态的消息报文;
进一步地,响应于某一特定的指令或场景而进行自动提取,例如:出现系统宕机等情况。
S750、将所述消息报文推送至消息接收服务器,经由消息中间件转发至所述消息处理服务器,以使所述消息处理服务器对所述消息报文进行业务处理。
具体地,将提取的所有第一状态的消息报文推送给消息接收服务器。消息接收服务器将至少一个第一状态的消息报文按照指定的交换机和路由键发送给消息中间件(RabbitMQ)的消息队列中,且消息中间件将至少一个第一状态的消息报文推送至消息处理器,以使所述消息处理服务器对所述消息报文进行业务处理。
本实施例的消息处理方法,通过保存从消息接收服务器获取的至少一个消息报文及其相关数据,检测消息处理服务器中所述消息报文的处理状态,当检测消息处理服务器成功处理消息报文对应的数据时,将与消息报文对应的状态值由第一状态改为第二状态,提取状态值为第一状态的消息报文,将消息报文推送至消息接收服务器,经由消息中间件转发至消息处理服务器,以使消息处理服务器对消息报文进行业务处理。从而本实施例的消息处理方法能够及时保存消息接收服务器写入的消息报文,能够根据消息报文的处理状态,及时修改储存的状态值。
请参照图8,本发明第六实施例在第五实施例的基础上进一步提供一种消息处理方法,所述方法包括步骤:
S810、侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机;
S820、提取状态值为第一状态且所述发送时间戳在宕机之前的消息报文,并推送至消息接收服务器;
具体地,当宕机的所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一重新启动时,提取状态值为第一状态且所述发送时间戳在宕机之前的消息报文及其相应的数据,并将提取的第一状态的消息报文及其相应的数据推送至消息接收服务器。
S830、消息接收服务器对消息报文数据进行解析处理,并将解析处理后的消息报文依据指定的交换机和路由键重新推送到消息中间件对应的消息队列中;
S840、消息处理服务器从消息中间件提取相应的消息报文进行业务处理;
S850、检测业务处理成功,则数据库中的该消息报文状态值由第一状态改为第二状态。
其中,S830-S850与第四实施例的S620-S640的过程相类似,本实施例在此不再赘述。
可选地,作为本发明的进一步改进,本实施例的消息处理方法还可以包括:
S860、删除状态值为第二状态的消息报文及其数据。
具体地,可以通过搜索订单号找到状态值为第二状态的消息报文及其所有数据,将其删除;也可以直接提取状态值为第二状态的消息报文及其所有进行删除,以清理数据库内不必要的数据垃圾。
本实施例的消息处理方法,通过侦测消息接收服务器、消息中间件、以及消息处理服务器之一出现宕机,则当宕机的消息接收服务器、消息中间件、以及消息处理服务器之一重新启动时,提取状态值为第一状态且发送时间戳在宕机之前的消息报文,并将消息报文及其数据推送至述消息接收服务器。即便在出现宕机的情况下,本实施例的消息处理方法也不会将数据丢失,且通过将状态值为第二状态的消息报文及其数据进行删除,清理了不必要的数据垃圾、提高了系统的整体性能。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种消息处理装置,应用于数据库,其特征在于,所述装置包括:
保存模块,用于保存从消息接收服务器获取的至少一个消息报文及其相关数据;
检测模块,用于检测消息处理服务器中所述消息报文的处理状态;
消息状态处理模块,用于当检测消息处理服务器成功处理所述消息报文对应的数据时,将与所述消息报文对应的状态值由第一状态改为第二状态。
2.根据权利要求1所述的消息处理装置,其特征在于,所述装置还包括:
提取模块,用于提取状态值为第一状态的消息报文;
消息推送模块,用于将所述消息报文推送至消息接收服务器,经由消息中间件转发至所述消息处理服务器,以使所述消息处理服务器对所述消息报文进行业务处理。
3.根据权利要求2所述的消息处理装置,其特征在于,所述相关数据至少包括发送时间戳,所述装置还包括:
侦测模块,用于侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机;
相应地,所述提取模块具体用于当宕机的所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一重新启动时,提取状态值为第一状态且所述发送时间戳在宕机之前的消息报文,并将提取的所述消息报文通过所述消息推送模块推送至所述消息接收服务器。
4.根据权利要求1-3所述的消息处理装置,其特征在于,所述装置还包括:
删除模块,用于删除状态值为第二状态的消息报文及其数据。
5.一种消息处理系统,其特征在于,所述系统包括:
消息接收服务器,用于接收至少一个消息报文,并将所述至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态;
所述数据库,用于保存从所述消息接收服务器获取的所述至少一个消息报文及其相关数据;
消息处理服务器,用于从所述消息中间件提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
6.一种消息处理方法,应用于数据库,其特征在于,所述方法包括:
保存从消息接收服务器获取的至少一个消息报文及其相关数据;
检测消息处理服务器中所述消息报文的处理状态;
当检测消息处理服务器成功处理所述消息报文对应的数据时,将与所述消息报文对应的状态值由第一状态改为第二状态。
7.根据权利要求6所述的消息处理方法,其特征在于,所述方法还包括:
提取状态值为第一状态的消息报文;
将所述消息报文推送至消息接收服务器,经由消息中间件转发至所述消息处理服务器,以使所述消息处理服务器对所述消息报文进行业务处理。
8.根据权利要求7所述的消息处理方法,其特征在于,所述相关数据至少包括发送时间戳,所述方法具体包括:
侦测所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一出现宕机;
当宕机的所述消息接收服务器、所述消息中间件、以及所述消息处理服务器之一重新启动时,提取状态值为第一状态且所述发送时间戳为宕机之前的消息报文,并将提取的所述消息报文推送至所述消息接收服务器。
9.根据权利要求6-7任一所述的消息处理方法,其特征在于,所述方法还包括:
删除状态值为第二状态的消息报文及其数据。
10.一种消息处理方法,其特征在于,所述方法包括步骤:
接收至少一个消息报文;
将所述至少一个消息报文依次发送给消息中间件的消息队列中,同时将所述至少一个消息报文及其对应的状态值写入数据库,默认所述状态值为第一状态;
保存从所述消息接收服务器获取的所述至少一个消息报文及其相关数据;以及
从所述消息中间件提取所述消息报文进行业务处理,当业务处理成功时,所述状态值改为第二状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610058201.6A CN105740083A (zh) | 2016-01-28 | 2016-01-28 | 消息处理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610058201.6A CN105740083A (zh) | 2016-01-28 | 2016-01-28 | 消息处理方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105740083A true CN105740083A (zh) | 2016-07-06 |
Family
ID=56246900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610058201.6A Pending CN105740083A (zh) | 2016-01-28 | 2016-01-28 | 消息处理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740083A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412027A (zh) * | 2016-09-12 | 2017-02-15 | 曙光信息产业(北京)有限公司 | 服务器的消息推送方法及推送系统 |
CN107038077A (zh) * | 2016-11-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息蓄洪方法及装置 |
CN107122252A (zh) * | 2017-04-21 | 2017-09-01 | 京东方科技集团股份有限公司 | 一种系统间交互方法和装置 |
CN107133111A (zh) * | 2017-04-27 | 2017-09-05 | 努比亚技术有限公司 | 一种消息处理装置及方法 |
CN107222530A (zh) * | 2017-05-23 | 2017-09-29 | 努比亚技术有限公司 | 服务异步交互方法、设备、系统和可读介质 |
CN107483653A (zh) * | 2017-08-24 | 2017-12-15 | 郑州云海信息技术有限公司 | 机房内主机信息的获取方法和装置 |
CN107682398A (zh) * | 2017-08-28 | 2018-02-09 | 平安科技(深圳)有限公司 | 数据发送对象的选择方法、装置、计算机设备及存储介质 |
CN108512943A (zh) * | 2018-05-07 | 2018-09-07 | 苏州德姆斯信息技术有限公司 | 基于消息队列的嵌入式设备数据保存系统及保存方法 |
CN109167819A (zh) * | 2018-08-13 | 2019-01-08 | 苏州科达科技股份有限公司 | 数据同步系统、方法、装置及存储介质 |
CN109800096A (zh) * | 2019-01-08 | 2019-05-24 | 深圳市买买提信息科技有限公司 | 一种消息拦截重发的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707633A (zh) * | 2009-11-27 | 2010-05-12 | 山东中创软件商用中间件股份有限公司 | 一种基于文件系统的消息中间件持久消息的存储方法 |
CN103209214A (zh) * | 2013-04-03 | 2013-07-17 | 蓝盾信息安全技术股份有限公司 | 一种基于NoSQL的消息中间件的实现方法 |
CN104252466A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 流计算处理方法、设备和系统 |
-
2016
- 2016-01-28 CN CN201610058201.6A patent/CN105740083A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101707633A (zh) * | 2009-11-27 | 2010-05-12 | 山东中创软件商用中间件股份有限公司 | 一种基于文件系统的消息中间件持久消息的存储方法 |
CN103209214A (zh) * | 2013-04-03 | 2013-07-17 | 蓝盾信息安全技术股份有限公司 | 一种基于NoSQL的消息中间件的实现方法 |
CN104252466A (zh) * | 2013-06-26 | 2014-12-31 | 阿里巴巴集团控股有限公司 | 流计算处理方法、设备和系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412027A (zh) * | 2016-09-12 | 2017-02-15 | 曙光信息产业(北京)有限公司 | 服务器的消息推送方法及推送系统 |
CN107038077A (zh) * | 2016-11-17 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 消息蓄洪方法及装置 |
CN107038077B (zh) * | 2016-11-17 | 2021-07-27 | 创新先进技术有限公司 | 消息蓄洪方法及装置 |
CN107122252B (zh) * | 2017-04-21 | 2021-01-26 | 京东方科技集团股份有限公司 | 一种系统间交互方法和装置 |
CN107122252A (zh) * | 2017-04-21 | 2017-09-01 | 京东方科技集团股份有限公司 | 一种系统间交互方法和装置 |
CN107133111A (zh) * | 2017-04-27 | 2017-09-05 | 努比亚技术有限公司 | 一种消息处理装置及方法 |
CN107222530A (zh) * | 2017-05-23 | 2017-09-29 | 努比亚技术有限公司 | 服务异步交互方法、设备、系统和可读介质 |
CN107483653A (zh) * | 2017-08-24 | 2017-12-15 | 郑州云海信息技术有限公司 | 机房内主机信息的获取方法和装置 |
CN107682398A (zh) * | 2017-08-28 | 2018-02-09 | 平安科技(深圳)有限公司 | 数据发送对象的选择方法、装置、计算机设备及存储介质 |
WO2019041499A1 (zh) * | 2017-08-28 | 2019-03-07 | 平安科技(深圳)有限公司 | 数据发送对象的选择方法、装置、计算机设备及存储介质 |
CN107682398B (zh) * | 2017-08-28 | 2019-06-21 | 平安科技(深圳)有限公司 | 数据发送对象的选择方法、装置、计算机设备及存储介质 |
CN108512943A (zh) * | 2018-05-07 | 2018-09-07 | 苏州德姆斯信息技术有限公司 | 基于消息队列的嵌入式设备数据保存系统及保存方法 |
CN109167819A (zh) * | 2018-08-13 | 2019-01-08 | 苏州科达科技股份有限公司 | 数据同步系统、方法、装置及存储介质 |
CN109800096A (zh) * | 2019-01-08 | 2019-05-24 | 深圳市买买提信息科技有限公司 | 一种消息拦截重发的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105740083A (zh) | 消息处理方法、装置及系统 | |
CN104270275B (zh) | 一种异常原因的辅助分析方法、服务器以及智能设备 | |
CN102655481B (zh) | 一种基于网页的即时通信聊天内容查看方法及系统 | |
CN102821109A (zh) | 在即时通信应用中实现数据共享的方法、相关设备及系统 | |
CN103092712A (zh) | 一种任务中断恢复方法和设备 | |
CN103532919A (zh) | 用户账户保持登录态的方法及系统 | |
CN103905495B (zh) | 一种应用的同步方法及后台服务器 | |
CN102638416A (zh) | 多客户端登录时查看im消息的方法、客户端及系统 | |
CN105208545A (zh) | 基于虚拟sim卡的通信数据管理方法、装置和服务器 | |
CN111400378A (zh) | 基于ElasticSearch的日志实时显示方法、装置、计算机设备和介质 | |
JP6553712B2 (ja) | インタラクション情報におけるdoi(デジタルオブジェクト一意識別子)の処理メソッド及びその装置 | |
CN101169799A (zh) | 一种操作信息收集系统及方法 | |
CN103209214A (zh) | 一种基于NoSQL的消息中间件的实现方法 | |
CN103167086A (zh) | 一种清理手机无效联系人的系统及方法 | |
CN105447146A (zh) | 一种海量数据的收集与交换系统及方法 | |
CN102571990B (zh) | 移动终端电子邮件同步方法及系统 | |
CN104216896A (zh) | 一种查找联系人信息的方法及装置 | |
CN102118451A (zh) | 用户资源的上传处理方法及装置 | |
CN105653717B (zh) | 一种信息分享的方法及装置 | |
CN103678314A (zh) | 基于关联规则提取的海量数据处理系统、设备及方法 | |
CN103561147A (zh) | 移动设备的通讯录更新方法和系统 | |
CN102510407A (zh) | 一种对博客进行读、写操作的方法及系统 | |
CN106302625B (zh) | 数据更新方法、装置及相关系统 | |
CN104113465B (zh) | 实现即时通信开放平台中消息处理的方法和系统 | |
US20090280781A1 (en) | Method and device for storing and transmitting messages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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: 20160706 |
|
RJ01 | Rejection of invention patent application after publication |