一种消息队列的消息插入时间的方法及拦截器与流程

文档序号:11386318阅读:254来源:国知局
一种消息队列的消息插入时间的方法及拦截器与流程

本发明涉及计算机技术领域,特别涉及一种消息队列的消息插入时间的方法。



背景技术:

在复杂的软件系统中,为了实现软件系统的功能,需要软件系统中各个模块之间进行频繁的消息交互。

目前,软件系统中各个模块之间的消息交互通过消息队列来实现。在对进入消息队列的消息加入时间戳时,消息队列不能对加入的消息进行不同的操作,要么加入的消息均插入时间戳,要么加入的消息均不插入时间戳。

但是,在实际应用中,存在一些模块需要消息队列传送带有时间戳的消息,而另外一些模块并不需要消息队列传送带有时间戳的消息。但是消息队列不能对上述这些模块需要的消息进行不同的插入时间戳操作,因此,现有的方式,业务灵活性较差。



技术实现要素:

本发明提供了一种消息队列的消息插入时间的方法及拦截器,可以提高业务灵活性。

第一方面,本发明提供了一种消息队列的消息插入时间的方法,该方法包括:

获取待加入消息;

解析所述待加入消息的消息头,其中,所述消息头包括至少一个参数信息;

根据所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳;

当确定所述待加入消息需要插入时间戳时,在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列。

优选地,

所述根据所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳,包括:

确定每一个所述参数信息对应的类型;

根据各个所述类型,确定所述待加入消息是否需要插入时间戳。

优选地,

所述在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列,包括:

确定将所述待加入消息加入消息队列的时间;

利用确定的所述时间生成时间戳;

在所述待加入消息的消息头中插入生成的时间戳,将插入时间戳的所述待加入消息加入消息队列。

优选地,

所述将插入时间戳的所述待加入消息加入消息队列,包括:

确定所述消息对列中至少一个加入位置;

在所述至少一个加入位置中,确定目标加入位置;

将插入时间戳的所述待加入消息加入所述目标加入位置中。

优选地,

进一步包括:

当确定所述待加入消息不需要插入时间戳时,将所述待加入消息加入消息队列。

优选地,

所述消息队列,包括:activemq、rabbitmq、redis、zeromq以及kafka中的任意一种。

优选地,

所述时间戳的格式,包括:年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒中的任意一种。

第二方面,本发明提供了一种消息队列的消息插入时间的拦截器,该拦截器包括:

获取单元,用于获取待加入消息;

解析单元,用于解析所述获取单元获取的所述待加入消息的消息头,其中,所述消息头包括至少一个参数信息;

确定单元,用于根据所述解析单元解析的所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳;

第一加入单元,用于当所述确定单元确定所述待加入消息需要插入时间戳时,在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列。

优选地,

所述确定单元,包括:类型确定子单元和确定子单元;

所述类型确定子单元,用于确定每一个所述参数信息对应的类型;

所述确定子单元,用于根据所述类型确定子单元确定的各个所述类型,确定所述待加入消息是否需要插入时间戳。

优选地,

所述第一加入单元,包括:时间确定子单元、生成子单元、加入子单元;

所述时间确定子单元,用于确定将所述待加入消息加入消息队列的时间;

所述生成子单元,用于利用所述时间确定子单元确定的所述时间生成时间戳;

所述加入子单元,用于在所述待加入消息的消息头中插入所述生成单元生成的时间戳,将插入时间戳的所述待加入消息加入消息队列。

优选地,

所述第一加入单元,用于确定所述消息对列中至少一个加入位置;在所述至少一个加入位置中,确定目标加入位置;将插入时间戳的所述待加入消息加入所述目标加入位置中。

优选地,

进一步包括:第二加入子单元;

所述第二加入子单元,用于当确定所述待加入消息不需要插入时间戳时,将所述待加入消息加入消息队列。

本发明实施例提供了一种消息队列的消息插入时间的方法及拦截器,通过获取待加入消息。然后解析待加入消息的消息头,以确定消息头中包括的参数信息。然后当根据解析出来的参数信息,确定待加入消息需要插入时间戳时,在待加入消息的消息头中插入时间戳,然后将插入时间戳的待加入消息加入消息队列。通过上述过程可知,本方案可以根据待加入消息消息头中包括参数信息确定是否为待加入信息加入时间戳,只有当确定需要加入时间戳时,才在待加入信息中加入时间戳,因此,本发明提供的方案可以提高业务灵活性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种消息队列的消息插入时间的方法的流程图;

图2是本发明另一个实施例提供的一种消息队列的消息插入时间的方法的流程图;

图3是本发明又一个实施例提供的一种消息队列的消息插入时间的方法的流程图;

图4是本发明一个实施例提供的一种消息队列的消息插入时间的拦截器所在设备的一种硬件结构图;

图5是本发明一个实施例提供的一种消息队列的消息插入时间的拦截器的结构示意图;

图6是本发明一个实施例提供的一种包括类型确定子单元和确定子单元的消息队列的消息插入时间的拦截器的结构示意图;

图7是本发明另一个实施例提供的一种消息队列的消息插入时间的拦截器的结构示意图;

图8是本发明一个实施例提供的一种包括第二计入单元的消息队列的消息插入时间的拦截器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种消息队列的消息插入时间的方法,该方法可以包括以下步骤:

步骤101:获取待加入消息;

步骤102:解析所述待加入消息的消息头,其中,所述消息头包括至少一个参数信息;

步骤103:根据所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳;

步骤104:当确定所述待加入消息需要插入时间戳时,在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列。

根据图1所示的实施例,通过获取待加入消息。然后解析待加入消息的消息头,以确定消息头中包括的参数信息。然后当根据解析出来的参数信息,确定待加入消息需要插入时间戳时,在待加入消息的消息头中插入时间戳,然后将插入时间戳的待加入消息加入消息队列。通过上述过程可知,本方案可以根据待加入消息消息头中包括参数信息确定是否为待加入信息加入时间戳,只有当确定需要加入时间戳时,才在待加入信息中加入时间戳,因此,本发明提供的实施例可以提高业务灵活性。

在本发明一个实施例中,上述图1所示流程图中所涉及的待加入消息可以由消息头和消息体组成,其中,消息体为业务数据。消息头具有消息发送方和消息接收方约定的格式,比如消息头中可以包括至少一个参数信息,其中参数信息可以包括消息发送方的编码、消息接收方的编码、时间参数、消息体中业务数据的属性信息等。

当获取待加入消息之后,可以根据预先设定的解析方式将消息头中包括的参数信息解析出来,以便可以根据解析出来的参数信息确定待加入消息是否需要插入时间戳。

在本发明一个实施例中,上述图1所示流程图中的步骤103根据所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳,可以包括:

确定每一个所述参数信息对应的类型;

根据各个所述类型,确定所述待加入消息是否需要插入时间戳。

在本实施例中,各个参数信息对应的类型可以根据业务要求确定。当在确定每一个参数信息对应的类型时,可以根据预先设定的参数信息和类型的对应的关系确定参数信息对应的类型。比如,预先设定消息发送方的编码和消息接收方的编码对应的类型为编码;预先设定时间参数对应的类型为时间;预先设定消息体中业务数据的属性信息为属性。比如,获取待加入消息a,并解析出的参数信息包括消息发送方的编码、消息接收方的编码以及时间参数,则根据预先设定的对应关系确定消息发送方的编码和消息接收方的编码对应的类型为编码、确定时间参数对应的类型为时间。然后根据编码和时间,确定待加入消息a是否需要插入时间戳。可见确定的类型中包括时间,则确定待加入消息a需要插入时间戳。又如,当确定的类型中不包括时间时,则确定待加入消息a不需要插入时间戳。

根据上述实施例,当解析出待加入消息的消息头中包括的参数信息时,确定各个参数信息对应的类型,并根据确定的类型确定待加入消息是否需要插入时间戳,因此可以根据参数信息对应的类型更为明确的判断待加入消息是否需要插入时间戳。

在本发明一个实施例中,在在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列,至少可以包括如下两种方式;方式一:在本发明一个实施例中,上述图1所示流程图中步骤104中所涉及的

在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列,包括:

确定将所述待加入消息加入消息队列的时间;

利用确定的所述时间生成时间戳;

在所述待加入消息的消息头中插入生成的时间戳,将插入时间戳的所述待加入消息加入消息队列。

在本实施例中,待加入消息加入消息队列的时间为待加入消息正式加入消息队列的时间。比如待加入消息a加入消息队列的时间为2017年5月4日8点30分45秒,则确定的时间就为2017年5月4日8点30分45秒。在确定待加入消息加入消息队列的时间之后,根据预先设定的时间戳格式,利用确定的时间生成时间戳2017-05-04-08-30-45,然后在待加入消息的消息头中插入时间戳2017-05-04-08-30-45。将插入时间戳2017-05-04-08-30-45的待加入消息a加入消息队列。其中,时间戳的格式可以根据业务要求确定,比如年-月-日-小时-分钟-秒。

方式二:在本发明一个实施例中,上述图1所示流程图中步骤104中所涉及的

在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列,包括:

确定获取所述待加入消息的时间;

利用确定的所述时间生成时间戳;

在所述待加入消息的消息头中插入生成的时间戳,将插入时间戳的所述待加入消息加入消息队列。

在本实施例中,比如获取待加入消息b的时间为2017年5月5日12点15分30秒,则确定的时间就为2017年5月5日12点15分30秒。在确定待加入消息加入消息队列的时间之后,根据预先设定的时间戳格式,利用确定的时间生成时间戳2017-05-05-12-15-30。然后将待加入消息的消息头中插入时间戳2017-05-05-12-15-30,将插入时间戳2017-05-05-12-15-30的待加入消息b加入消息队列。

由于发送待加入消息的消息发送方的时间可能存在误差,因此会造成获取待加入消息的时间存在误差,因此本实施例提供的时间戳生成方式不作为优选的方式。

根据上述实施例,利用待加入消息正式加入消息队列的时间生成时间戳,并在待加入消息的消息头中插入时间戳,将插入时间戳的待加入消息加入消息队列。由于生成时间戳的时间为待加入消息加入消息队列的时间,因此生成时间戳的时间更为准确。

在本发明一个实施例中,上述图1所示流程图中步骤104中所涉及的将插入时间戳的所述待加入消息加入消息队列,包括:

确定所述消息对列中至少一个加入位置;

在所述至少一个加入位置中,确定目标加入位置;

将插入时间戳的所述待加入消息加入所述目标加入位置中。

在本实施例中,消息队列根据其包括的各个消息的位置,依次将各个消息发送给各个消息接收方。当对消息的传输次序有要求时,可以将待加入消息加入到消息队列中指定的位置中。

在本实施例中,在将待加入消息a加入到消息队列中时,确定消息队列中存在加入位置3、加入位置4、加入位置8。那么为了使待加入消息延后发送,选择加入位置8为目标加入位置,并将待加入消息a加入到加入位置8中。

根据上述实施例,在将插入时间戳的待加入消息加入消息队列时,可以在消息队列中确定待加入消息的加入位置,并将待加入消息加入到确定的加入位置。因此可以根据业务要求灵活确定待加入消息在消息队列中的加入位置。

在本发明一个实施例中,如图2所示,上述图1所示流程图中可以进一步包括如下步骤201:当确定所述待加入消息不需要插入时间戳时,将所述待加入消息加入消息队列。

在本实施例,比如存在待加入消息a,且当确定待加入消息a不需要插入时间戳时,可以直接将待加入消息加入消息队列。

根据上述实施例,当确定待加入消息不需要插入时间戳时,将待加入消息加入消息队列。因此可以根据消息头中的参数信息灵活确定待加入消息是否需要插入时间戳。

在本发明一个实施例中,上述图1所示流程图中所涉及的消息队列可以包括:activemq、rabbitmq、redis、zeromq以及kafka中的任意一种。

在本实施例中,消息队列的具体型式可以根据业务要求确定,可以是activemq、rabbitmq、redis、zeromq以及kafka中的任意一种。另外activemq、rabbitmq、redis、zeromq以及kafka只是优选的型式,还可以根据业务要求选择其他的消息队列。

根据上述实施例,消息队列可以根据业务要求选用activemq、rabbitmq、redis、zeromq以及kafka中的任意一种。因此业务适用性较强。

在本发明一个实施例中,上述图1所示流程图中所涉及的时间戳的格式,包括:年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒中的任意一种。

在本实施例中,时间戳的格式可以根据业务要求确定。比如可以是年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒中的任意一种。另外年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒只是优选的格式,还可以根据业务要求选择其他的格式。

根据上述实施例,时间戳的格式可以根据业务要求选用年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒中的任意一种。因此业务适用性较强。

下面以消息队列为rabbitmq为例。展开说明消息队列的消息插入时间的方法,如图3所示,该消息队列的消息插入时间的方法,可以包括如下步骤:

步骤301:获取待加入消息。

在本步骤中,获取待加入消息a。

步骤302:解析待加入消息的消息头,其中,消息头包括至少一个参数信息。

在本步骤中,解析步骤301中获取的待加入消息a的消息头。得到其消息头中包括消息发送方的编码、消息接收方的编码以及时间参数。

步骤303:确定每一个参数信息对应的类型。

在本步骤中,确定消息发送方的编码和消息接收方的编码对应的类型为编码;确定时间参数对应的类型为时间。

步骤304:根据各个类型,确定待加入消息是否需要插入时间戳;如果是,执行步骤306;否则,执行步骤305。

在本步骤中,由于步骤303确定的类型中包括时间,因此确定待加入消息a需要插入时间戳,所以执行步骤306。

步骤305:当确定待加入消息不需要插入时间戳时,将待加入消息加入消息队列,并结束当前流程。

在本步骤中,当步骤303确定的类型中不包括时间时,则确定待加入消息不需要插入时间戳,则将待加入消息直接加入到消息队列中。

步骤306:确定将待加入消息加入消息队列的时间。

在本步骤中,确定将待加入消息加入消息队列的时间为2017年5月4日8点30分45秒。

步骤307:利用确定的时间生成时间戳。

在本步骤中,利用步骤306中确定的时间以及预先设定的时间戳的格式,生成的时间戳为2017-05-04-08-30-45。

步骤308:在待加入消息的消息头中插入生成的时间戳。

在本步骤中,将步骤307中生成的时间戳2017-05-04-08-30-45插入到待加入消息的消息头中。

步骤309:确定消息对列中至少一个加入位置。

在本步骤中,确定消息对列rabbitmq中的加入位置为加入位置3、加入位置4、加入位置8。

步骤310:在至少一个加入位置中,确定目标加入位置。

在本步骤中,在步骤309确定的加入位置3、加入位置4、加入位置8中,确定加入位置8为目标加入位置。

步骤311:将插入时间戳的待加入消息加入目标加入位置中。

在本步骤中,将插入时间戳2017-05-04-08-30-45的待加入消息a加入到加入位置8中,以使消息对列rabbitmq按照加入位置将待加入消息a发送给消息接收方。

如图4、图5所示,本发明实施例提供了一种消息队列的消息插入时间的拦截器。拦截器实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图4所示,为本发明实施例提供的一种消息队列的消息插入时间的拦截器所在设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中拦截器所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图5所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种消息队列的消息插入时间的拦截器,包括:

获取单元501,用于获取待加入消息;

解析单元502,用于解析所述获取单元501获取的所述待加入消息的消息头,其中,所述消息头包括至少一个参数信息;

确定单元503,用于根据所述解析单元502解析的所述至少一个参数信息,确定所述待加入消息是否需要插入时间戳;

第一加入单元504,当所述确定单元503确定所述待加入消息需要插入时间戳时,在所述待加入消息的消息头中插入时间戳,将插入时间戳的所述待加入消息加入消息队列。

根据如图5所示的实施例,该消息队列的消息插入时间的拦截器包括:获取单元、解析单元、确定单元、第一加入单元;通过解析单元解析获取单元获取的待加入消息的包括参数信息的消息头。然后确定单元根据解析单元解析的参数信息,确定待加入消息是否需要插入时间戳。当第一加入单元确定待加入消息需要插入时间戳时,在待加入消息的消息头中插入时间戳,并将插入时间戳的待加入消息加入消息队列。通过上述过程可知,本方案可以根据待加入消息消息头中包括参数信息确定是否为待加入信息加入时间戳,只有当确定需要加入时间戳时,才在待加入信息中加入时间戳,因此,本发明提供的实施例可以提高业务灵活性。

在本发明一个实施例中,如图6所示,所述确定单元503中可以包括:类型确定子单元601和确定子单元602;

所述类型确定子单元601,用于确定每一个所述参数信息对应的类型;

所述确定子单元602,用于根据所述类型确定子单元601确定的各个所述类型,确定所述待加入消息是否需要插入时间戳。

在本发明一个实施例中,如图7所示,所述第一加入单元504中可以包括:时间确定子单元701、生成子单元702、加入子单元703;

所述时间确定子单元701,用于确定将所述待加入消息加入消息队列的时间;

所述生成子单元702,用于利用所述时间确定子单元701确定的所述时间生成时间戳;

所述加入子单元703,用于在所述待加入消息的消息头中插入所述生成单元702生成的时间戳,将插入时间戳的所述待加入消息加入消息队列。

在本发明一个实施例中,所述第一加入单元504,用于确定所述消息对列中至少一个加入位置;在所述至少一个加入位置中,确定目标加入位置;将插入时间戳的所述待加入消息加入所述目标加入位置中。

在本发明一个实施例中,如图8所示,消息队列的消息插入时间的拦截器中可以进一步包括第二加入子单元801;

所述第二加入子单元801,用于当确定所述待加入消息不需要插入时间戳时,将所述待加入消息加入消息队列。

在本发明一个实施例提供了一种可读介质,该可读介质包括:执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述任一项所述消息队列的消息插入时间的方法。

在本发明一个实施例提供了一种存储控制器,该存储控制器包括:处理器、存储器和总线;所述存储器用于存储执行指令;所述处理器与所述存储器通过所述总线连接;当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述任一项所述消息队列的消息插入时间的拦截器。

上述拦截器内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明各个实施例至少可以实现如下有益效果:

1、在本发明实施例中,通过获取待加入消息。然后解析待加入消息的消息头,以确定消息头中包括的参数信息。然后当根据解析出来的参数信息,确定待加入消息需要插入时间戳时,在待加入消息的消息头中插入时间戳,然后将插入时间戳的待加入消息加入消息队列。通过上述过程可知,本方案可以根据待加入消息消息头中包括参数信息确定是否为待加入信息加入时间戳,只有当确定需要加入时间戳时,才在待加入信息中加入时间戳,因此,本发明提供的实施例可以提高业务灵活性。

2、在本发明实施例中,当解析出待加入消息的消息头中包括的参数信息时,确定各个参数信息对应的类型,并根据确定的类型确定待加入消息是否需要插入时间戳,因此可以根据参数信息对应的类型更为明确的判断待加入消息是否需要插入时间戳。

3、在本发明实施例中,利用待加入消息正式加入消息队列的时间生成时间戳,并在待加入消息的消息头中插入时间戳,将插入时间戳的待加入消息加入消息队列。由于生成时间戳的时间为待加入消息加入消息队列的时间,因此生成时间戳的时间更为准确。

4、在本发明实施例中,在将插入时间戳的待加入消息加入消息队列时,可以在消息队列中确定待加入消息的加入位置,并将待加入消息加入到确定的加入位置。因此可以根据业务要求灵活确定待加入消息在消息队列中的加入位置。

5、在本发明实施例中,当确定待加入消息不需要插入时间戳时,将待加入消息加入消息队列。因此可以根据消息头中的参数信息灵活确定待加入消息是否需要插入时间戳。

6、在本发明实施例中,消息队列可以根据业务要求选用activemq、rabbitmq、redis、zeromq以及kafka中的任意一种。因此业务适用性较强。

7、在本发明实施例中,时间戳的格式可以根据业务要求选用年-月-日、年-月-日-小时-分钟-秒、小时-分钟-秒中的任意一种。因此业务适用性较强。

8、在本发明实施例中,该消息队列的消息插入时间的拦截器包括:获取单元、解析单元、确定单元、第一加入单元;通过解析单元解析获取单元获取的待加入消息的包括参数信息的消息头。然后确定单元根据解析单元解析的参数信息,确定待加入消息是否需要插入时间戳。当第一加入单元确定待加入消息需要插入时间戳时,在待加入消息的消息头中插入时间戳,并将插入时间戳的待加入消息加入消息队列。通过上述过程可知,本方案可以根据待加入消息消息头中包括参数信息确定是否为待加入信息加入时间戳,只有当确定需要加入时间戳时,才在待加入信息中加入时间戳,因此,本发明提供的实施例可以提高业务灵活性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1