CN113849320A - 开发方法、控制方法及计算设备 - Google Patents

开发方法、控制方法及计算设备 Download PDF

Info

Publication number
CN113849320A
CN113849320A CN202110963307.1A CN202110963307A CN113849320A CN 113849320 A CN113849320 A CN 113849320A CN 202110963307 A CN202110963307 A CN 202110963307A CN 113849320 A CN113849320 A CN 113849320A
Authority
CN
China
Prior art keywords
plug
message
interface
called
component
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
CN202110963307.1A
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.)
Alibaba Innovation Co
Original Assignee
Alibaba Singapore Holdings Pte 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 Alibaba Singapore Holdings Pte Ltd filed Critical Alibaba Singapore Holdings Pte Ltd
Priority to CN202110963307.1A priority Critical patent/CN113849320A/zh
Publication of CN113849320A publication Critical patent/CN113849320A/zh
Priority to PCT/SG2022/050463 priority patent/WO2023022652A2/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/466Transaction processing
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供了一种开发方法、控制方法及计算设备。其中,消息队列系统的节点在处理任一处理操作的处理组件被调用之前和/或被调用之后预留接口,确定基于预留的至少一个接口进行插件开发获得的插件文件;将插件文件部署至节点中的指定存储位置。节点检测到针对任一处理组件的触发事件,若处理组件被调用之前预留接口,调用接口对应的至少一个第一插件以实现至少一个第一操作;根据至少一个第一插件的执行结果,调用处理组件处理触发事件;处理组件执行结束,若处理组件被调用之后预留接口,调用并执行接口对应的至少一个第二插件以实现至少一个第二操作。本申请实施例满足了个性化功能开发要求,提高了系统灵活性和稳定性。

Description

开发方法、控制方法及计算设备
技术领域
本申请实施例涉及消息处理技术领域,尤其涉及一种开发方法、控制方法及计算设备。
背景技术
消息队列(英文:Message Queue,简称:MQ)系统采用消息中间件机制实现消息传递,消息的生产者将消息发送给服务端,服务端将消息存放与消息队列中,在合适的时机再将消息转发给消息的消费者,实现了同步或异步、以及可靠的消息传输。
实际应用中,不同使用方使用消息队列系统的时候,往往也会有自己的使用需求,比如希望使用特定存储引擎存储消息而非指定的存储引擎。此时就需要通过修改消息队列系统的内核代码的形式实现,但是这样可能会破坏其他功能的实现,从而增加系统的不稳定性。
发明内容
本申请实施例提供一种开发方法、控制方法、及计算设备,用以解决现有技术中消息队列系统无法满足个性化要求的技术问题。
第一方面,本申请实施例中提供了一种开发方法,包括:
确定消息队列系统中任一节点的处理流程;所述处理流程涉及至少一个处理操作;
在所述节点中,执行任一处理操作的处理组件被调用之前和/或被调用之后预留接口;
确定基于预留的至少一个接口进行插件开发获得的插件文件;
将所述插件文件部署至所述节点中的指定存储位置。
可选地,所述消息队列系统为RocketMQ系统。
可选地,所述插件文件包括代码包文件及描述文件;所述描述文件定义了所述插件的标识、版本、调用优先级及调用类库;
所述插件文件部署至所述节点中的指定存储位置包括:
判断所述指定存储位置是否存在与所述插件文件标识相同的已有文件;
若是,利用所述插件文件更新所述已有文件。
可选地,还包括:
将在所述节点中预留的接口定义在软件开发工具包中;其中,所述插件文件具体根据待扩展功能,从所述软件开发工具包中选择至少一个接口进行插件开发获得。
可选地,所述节点为中转服务端;所述中转服务端包括基于生产者或消费者发送的任意请求而被调用的客户端处理组件;所述中转服务端中至少在所述客户端处理组件被调用之前预留接口;基于所述客户端处理组件被调用之前预留接口开发的插件包括鉴权插件,用于对所述请求进行鉴权;
或者,
所述节点为中转服务端;所述中转服务端包括基于所述生产者发布的半事务消息而被调用的事务消息生产组件,及基于所述生产者提交的事务消息确认通知而被调用的事务消息确认组件;
所述中转服务端中至少在所述事务消息生产组件被调用之前预留接口以及在所述事务消息确认组件被调用之前预留接口;基于所述事务消息生产组件被调用之前预留接口开发的插件包括事务消息生产插件,用以将所述生产者发布的事务消息暂存至指定存储引擎中;基于所述事务消息确认组件被调用之前预留接口开发的插件包括事务消息确认插件,用以从所述指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中;
或者,
所述节点为中转服务端;基于任一处理组件被调用之前和/或被调用之后预留接口开发的插件包括采集插件,用于采集并统计任一个消息的消息轨迹数据;
或者,
所述节点为中转服务端;所述中转服务端包括将所述生产者发布的消息写入消息队列,以及将所述消息队列中所以三个月消息者订阅的消息投递至所述消费者的消息存储组件;在所述消息存储组件被调用之后预留接口;基于所述消息存储组件被调用之后预留接口开发的插件包括指标统计插件,用于采集并统计所述消息队列的指标数据;
或者:
所述节点为命名服务端;所述命名服务端包括通用处理组件;所述命名服务端中至少在所述通用处理组件被调用之前预留接口;基于所述通用处理组件被调用之前预留接口开发的插件包括服务发现插件,用于根据生产者或消息者发送的消息获取请求,向所述生产者或所述消费者反馈路由信息。
第二方面,本申请实施例提供了一种控制方法,应用于消息队列系统的节点中,所述方法包括:
扫描指定存储位置中的插件文件并加载对应插件;
检测到针对任一处理组件的触发事件,若所述处理组件被调用之前预留接口,调用所述接口对应的至少一个第一插件,以实现至少一个第一操作;
根据所述至少一个第一插件的执行结果,调用所述处理组件处理所述触发事件;
所述处理组件执行结束,若所述处理组件被调用之后预留接口,调用并执行所述接口对应的至少一个第二插件,以实现至少一个第二操作。
可选地,所述消息队列系统为RocketMQ系统。
可选地,还包括:
根据所述至少一个第二插件的执行结果,反馈所述处理组件的处理结果。
可选地,所述调用并执行所述接口对应的至少一个第一插件包括:
按照所述接口对应的至少一个第一插件的调用优先级,依次调用所述接口对应的至少一个第一插件;
所述调用所述接口对应的至少一个第二插件,以实现至少一个第二操作包括:
按照所述接口对应的至少一个第二插件的调用优先级,依次调用所述至少一个第二插件。
可选地,所述扫描指定存储位置中的插件文件并加载对应的插件包括:
扫描指定存储位置中的插件文件,并采用不同类加载器加载对应插件。
可选地,所述节点包括中转服务端;所述中转服务端包括基于生产者或消费者发送的任意请求而被调用的客户端处理组件;所述至少一个第一插件包括鉴权插件,用于对所述请求进行鉴权;
或者,
所述节点为中转服务端;所述中转服务端包括基于生产者发布的半事务消息而被调用的事务消息生产组件和基于生产者提交的事务消息确认通知而被调用的事务消息确认组件;所述事务消息生产组件对应的至少一个第一插件包括事务消息生产插件,用以将生产者发布的事务消息暂存至指定存储引擎中;所述事务消息确认组件对应的至少一个第一插件包括事务消息确认插件,用于从所述指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中;
或者:
所述节点为中转服务端;所述至少一个第一插件或所述至少一个第二插件包括采集插件,用于采集并统计任一个消息的消息轨迹数据。
或者:
所述节点为命名服务端;所述命名服务端包括通用处理组件;所述至少一个第一插件包括服务发现插件,用于根据生产者或消息端的路由获取请求,向生产端或消费端反馈路由信息。
第三方面,本申请实施例提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如上述第二方面所述的控制方法。
本申请实施例中,根据消息队列系统中节点的处理流程,在处理处理流程中所涉及的任一处理操作的处理组件被调用之前和/或被调用之后预留接口,从而基于预留的接口可以开发实现相应功能的插件,在处理组件被调用之前或被调用之后,可以调用相应插件执行相应操作,以插件形式实现消息队列系统中的相应功能,方便节点的更新和修改,且无需修改内核代码,不会影响节点稳定性,且可满足不同使用方的个性化要求,提高了系统灵活性。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种消息队列系统的一个实施例的结构示意图;
图2示出了本申请提供的一种开发方法一个实施例的流程图;
图3示出了本申请提供的一种控制方法一个实施例的流程图;
图4示出了本申请提供的一种开发方法又一个实施例的流程图;
图5示出了本申请提供的一种控制方法又一个实施例的流程图;
图6示出了本申请提供的一种开发方法又一个实施例的流程图;
图7示出了本申请提供的一种控制方法又一个实施例的流程图;
图8示出了本申请提供的一种开发装置一个实施例的结构示意图;
图9示出了本申请提供的一种计算设备一个实施例的结构示意图;
图10示出了本申请提供的一种控制装置一个实施例的结构示意图;
图11示出了本申请提供的一种计算设备又一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例的技术方案主要应用于消息队列(英文:Message Queue,简称:MQ)系统中,用以实现消息队列系统中的节点功能的可定制化并可保证系统稳定性。
消息队列系统例如可以为RocketMQ系统,RocketMQ系统是一种分布式、开源的消息队列系统,具有低延迟、高并发、高可用、高可靠等特性,因此,在消息处理领域被广泛应用。RocketMQ系统与其它类型的消息队列系统一样,同样支持消息的发布和订阅,同时还支持一些特色功能,如事务消息、定时消息、延时消息的实现等。
消息队列系统可以由生产者、消费者以及服务端构成,其中,服务端可以是指消息中间件等。为了便于理解,如图1中所示,示出了一种消息队列系统的结构示意图,该消息队列系统可以由生成者(Producer)101、消费者(Consumer)102、命名服务端(Name server)103以及中转服务端(Broker server)104构成,其中,生成者、消费者、命名服务端以及中转服务端均可以以集群形式部署,由多个节点构成,生产者及消费者相对于命名服务端和中转服务端来,意即均为客户端。在一个实际应用中,例如,RocketMQ系统即采用图1所示结构实现。
结合图1所示的系统结构图,下面对本文可能涉及的技术术语首先进行相应解释:
消息(message):消息队列中承载并传递信息的载体。
Topic(主题):一种消息类型,发布的消息属于某一个类型,该类型被称作Topic。
中转服务端(Broker server):在消息队列系统中提供发布/订阅功能的节点,为消息中转角色,负责存储消息、转发消息等。
消息队列:每个Topic下会由一到多个消息队列来存储消息。
命名服务端(Name server):在消息队列系统中用于存储路由信息的节点,路由信息可以包括broker server列表以及broker server中的topic列表。通过Name server可以获得发布/订阅topic的所属brokerserver列表。Broker server启动之后会向每个Nameserver发送注册请求,上报自己的地址以及Topic列表等元数据。
生产者(Producer):又称为消息发布者,负责生产并发送消息。在消息队列系统中,生产者会随机与一个命令服务端建立长连接,从中获取待发布消息的Topic所在的Broker server,然后再与其建立长连接,并定期向Broker server发送心跳包。
消费者(Consumer):又称为消息订阅者,负责接收并消费消息。在消息队列系统中,消费者也会随机与一个命名服务端建立长连接,从中获取订阅的Topic所在的Brokerserver,然后再与其建立长连接。
分区(Partition):每个Topic至少具有一个分区,消息具体发布至分区中。
生产Offset:分区中用于标记消息的生产数量。
消费offset:分区中用于标记消息的消费数量。
消息轨迹:一条消息从Producer发出到Consumer消费处理过程中,由各个相关节点的处理时间、处理地点等数据汇聚而成的完整链路信息。
指标采集:采集表征消息队列运行状态的至少一个指标数据;至少一个指标数据例如包括:生产/消费消息次数、大小、成功数、失败数等。
定时消息:Producer将消息发送至Broker server,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到Consumer进行消费,该消息即定时消息。生产者发布的定时消息会暂存至存储引擎中,到达某一个时间之后再写入消息队列。
延时消息:Producer将消息发送到Broker server,但并不期望这条消息立马投递,而是延迟一定时间后才投递到Consumer进行消费,该消息即延时消息。生产者发布的定时消息会暂存至存储引擎中,延迟一定时间之后再写入消息队列。
事务消息:多条消息要么被同时消费要么均不被消费,具有该特性的消息即为事务消息。生产者会发布多条携带同一事务标识的半事务消息,Broker server将半事务消息暂存至存储引擎中,生产者的事务执行结束,会向Broker server发送确认请求,Brokerserver再将暂存属于同一事务的多条半事务消息作为事务信息写入消息队列中。
存储引擎:可以是指内存、文件系统、或第三方中间件如HDFS(HadoopDistributed File System,Hadoop分布式文件系统)、RDB(Relational Database,关系数据库)等,支持读取功能。
处理组件:可以理解为节点中用于执行处理操作的程序模块或逻辑处理器。一个处理组件可以执行至少一个处理操作。
处理流程:由至少一个处理操作构成,不同类型节点涉及的处理流程不同,比如消息队列系统中可以包括生产流程、消费流程、路由信息变更流程等。
接口:本申请实施例中可以是指API(Application Programming Interface,应用程序接口),用来提供程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
本申请实施例中,为了提高消息队列系统的灵活性,实现节点功能定制化,满足使用方的个性化要求,发明人经过一系列研究提出了本申请的技术方案,在本申请实施例中,根据消息队列系统中节点的处理流程,在处理处理流程所涉及的任一处理操作的处理组件被调用之前和/或被调用之后预留接口,从而基于预留的接口可以开发实现相应功能的插件,在处理组件被调用之前或被调用之后,可以调用相应插件执行相应操作,以插件形式实现相应功能,方便功能的更新和修改,且无需修改内核代码,不会影响节点稳定性,且可满足不同使用方的个性化要求,提高了系统灵活性。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2为本申请实施例提供的一种开发方法一个实施例的流程图,该方法可以包括以下几个步骤:
201:确定消息队列系统中任一节点的处理流程。
其中,处理流程可能涉及至少一个处理操作,意即处理流程可以由至少一个处理操作构成,一个处理流程包括多个处理操作,该多个处理操作之间可以具有执行顺序。可选地,一个节点可以涉及一个或多个处理流程,不同处理流程用于实现不同处理目的,比如中转服务端可以具有生产流程、消费流程等。
可选地,该消息队列系统例如可以为RocketMQ系统,当然,本申请实施例的技术方案可以适用于任意的消息队列系统中,如HiveMQ等。
消息队列系统中任一节点可以是指生产者、消费者、命名服务端或中转服务端。在消息队列系统中主要涉及生产流程、消费流程、信息获取流程等。
比如,命名服务端的信息获取流程可以包括接收生产者/消费者发送的建连请求;建立与生产者/消费者的长连接;以及向生产者/消费者发送路由信息等处理操作。
生产者的生产流程例如可以包括:向命名服务端发送建连请求;建立与命名服务端的长连接;从命名服务端请求获取路由信息;确定待发布消息的Topic所在中转服务端;向该中转服务度发送建连请求;建立与中转服务端的长连接;向中转服务端发布消息等处理操作。
消费者的消费流程例如可以包括:向命名服务端发送建连请求;建立与命名服务端的长连接;从命名服务端请求获取路由信息;确定待消费消息的Topic所在中转服务端;向该中转服务度发送建连请求;建立与中转服务端的长连接;从中转服务端消获取待消费消息等。
中转服务端的生产流程例如可以包括:接收生产者的建连请求;建立与生产者的长连接;接收生产者发布的消息;将消息写入消息队列等;
中转服务端的消费流程例如可以包括:接收消费者的建连请求;建立与消费者的长连接;接收消费者的消息订阅请求;将消费者订阅Topic中的消息投递至消费者等。
节点的处理流程可以结合实际情况以及功能定制化实际需求进行预先配置等。
202:在该节点中执行任一处理操作的处理组件被调用之前和/或被调用之后预留接口。
各个节点由至少一个处理组件处理处理流程,可选地,一个处理组件可以执行一个多个处理流程中的一个或多个处理操作,或者可以执行多个处理流程中的一个或多个处理操作等,本申请对此不进行具体限制,可以结合实际应用情况进行设置,任一处理组件被调用而执行任意处理流程中的任意的处理操作,均可以在节点的操作系统中,该任一处理组件被调用之前和/或被调用之后预留接口,当然也可以根据实际需求选择执行特定的处理操作的处理组件被调用之前和/或被调用之后预留接口。
比如,中转服务端可以包括客户端处理组件,用于处理消费者或生产者发送的各种请求;还可以包括消息发送组件,消息存储组件、消息获取组件、消费者管理组件、消费offset管理组件等。其中,消息发送组件可以接收客户端处理组件所接收的生产者发布的消息,再将该消息发送至消息存储组件,消息存储组件负责将消息写入消息队列;消息者管理组件负责接收消费者的消费offset获取请求,从消费offset管理组件中查询消费offset,并反馈给消费者;消息获取组件用于处理消费者基于消费offset发送的消息获取请求,从消息存储组件中的消息队列读取消息并反馈给消费者等。此外,中转服务端中还可以包括分别处理定时消息、延时消息或事务消息的消息处理组件,用来接收客户端处理组件所接收的生产者发布的定时消息、延时消息或事物消息,并按照相应处理方式进行消息发布等。
又如,命名服务端可以包括通用处理组件,用于接收各个Broker server发送的元数据,并可以基于生产者或消费者的建连请求,向生产者或消费者反馈路由信息等。
本申请实施例中,具体在节点系统中,调用任一处理组件之前可以预留接口,也可以在调用任一处理组件之后预留接口。从而基于这些接口可以进行插件开发,以扩展节点功能。
其中,插件(Plug-in,又称addin、add-in、addon或add-on)是指遵循一定规范的接口编写出来的程序。
203:确定基于预留的至少一个接口进行插件开发获得的插件文件。
根据在节点中预留的接口,消息队列系统的开发方或使用方可以选择一个或多个接口进行插件开发,从而生成插件文件。
其中,该插件文件可以包括代码包文件以及描述文件,代码包文件提供插件源代码等。描述文件中可以定义了插件的标识、版本、调用优先级及调用类库等。
其中,代码包文件可以是jar包,描述文件可以为xml文件等。
204:将插件文件部署至节点中的指定存储位置。
为了便于加载插件,可以将插件文件部署在节点中的指定存储位置中,以便于可以从该指定存储位置中扫描插件文件实现插件加载等。
在某些实施例中,为了方便进行插件开发,可选地,可以将在节点中预留的接口定义在软件开发工具包(英文:Software Development Kit,简称:SDK)中。
插件文件可以具体根据待扩展功能,从软件开发工具包中选择至少一个接口进行插件开发获得。
可选地,以插件形式进行功能开发可以方便更新及修改等,将插件文件部署至节点中的指定存储位置可以包括:
判断指定存储位置是否存在与插件文件的标识相同的已有文件;
若是,利用插件文件更新已有文件。
可选地,可以是将插件文件替换、修改或增加至该已有文件中,以实现插件更新。
此外,可以是在指定存储位置中存在与插件文件的标识相同且版本不同的已有文件情况下,利用插件文件更新已有文件等。
本实施例中,根据消息队列系统中的节点的处理流程,确定执行处理流程中的任一处理操作的处理组件,在该处理组件被调用之前和/或被调用之后预留接口,基于预留的接口可以开发实现相应功能的插件,并将插件文件部署在界面中的指定存储位置,使得节点在调用存在预留接口的处理组件之前或者之后可以首先调用接口对应的插件,以实现相应功能,以插件形式实现消息队列中的相应功能,方便节点的更新和修改,且无需修改节点的内核代码,不会影响节点系统的稳定性,且可满足了不同使用方的个性化要求,提高了灵活性。
对应于图2所示的开发方法,参见图3所示,本申请实施例还提供了一种控制方法,该控制方法可以由消息队列系统的节点执行,该消息队列系统例如可以为RocketMQ系统,该节点可以是指生产者、消费者、中转服务端或命名服务端,该方法可以包括以下几个步骤:
301:扫描指定存储位置中的插件文件并加载对应插件。
其中,插件的具体开发方式和插件文件的生成方式可以详见图2所示实施例中所述,此处不再赘述。由于插件文件部署在指定存储位置,因此从该指定存储位置可以扫描获得插件文件,并基于插件文件可以加载对应的插件。
可选地,可以是在节点启动之后,即执行步骤301的操作。
该指定存储位置中可以存储多个插件的插件文件,节点启动之后,扫描指定存储位置中的所有插件文件,以可以加载所有插件运行。
插件加载需要加载插件中的类文件使用的类库,为了保证不同插件使用同一个类库但是版本不同所造成的冲突,可选地,可以扫描指定存储位置中的插件文件,并采用不同类加载器加载对应插件,以避免加载不同版本的同一类库所造成的冲突。
可选地,可以是针对软件开发工具包使用以外的类库,不同插件采用不同类加载器进行加载。对于软件开发工具所使用的类库,由于版本保持一致,则不同插件可以采用同一类加载器进行加载。
302:检测到针对任一处理组件的触发事件,若处理组件被调用之前预留接口,调用接口对应的至少一个第一插件,以实现至少一个第一操作。
实际应用中,处理组件的触发事件会触发调用该处理组件执行以处理该触发事件,意即执行触发事件对应的处理操作。例如,触发事件可以是生产者或消费者发送的任意请求,或者在处理流程涉及多个处理操作时,触发事件可以是指当前处理操作的触发指令,该触发指令可以基于前一处理操作的处理结果而生成等。
而若该处理组件被调用之前预留了接口,此处即可以调用基于该接口开发的至少一个第一插件,以实现至少一个第一操作。
此外,若接口对应多个第一插件的情况下,可以按照多个第一插件的调用优先级依次调用多个第一插件。因此,调用并执行接口对应的至少一个第一插件可以包括:按照接口对应的至少一个第一插件的调用优先级,依次调用接口对应的至少一个第一插件;其中,预先存储至指定存储位置的插件文件中包括描述文件,而描述文件中定义了插件的调用优先级。
此外,由于一个处理组件可能会基于多个不同触发事件而被调用,而基于该处理组件被调用之前或被调用之后预留的接口开发的插件可能仅适用于某些触发事件,因此,调用接口对应的至少一个第一插件,任一个第一插件可能会根据触发事件,而执行空操作,意即第一操作为空操作,第一插件不执行任意处理操作,第一操作为空操作,对应的操作结果即为空等。
303:根据至少一个第一插件的执行结果,调用处理组件处理触发事件。
该至少一个第一插件全部执行结束之后,可以获得执行结果,该执行结果中可以包括每个第一操作的操作结果等。之后,可以根据执行结果,调用处理组件以处理该触发事件。
可选地,执行结果可以包括执行成功或执行失败等,不同执行结果触发的后续操作可以定义在插件中,从而至少一个第一插件执行结束之后,可以根据执行结果,确定是否调用处理组件以处理触发事件等。例如执行成功则可以调用处理组件,否则可以结束处理流程等。
此外,由于存在第一插件执行的第一操作为空操作的情况,也即执行结果也可能存在为空的情况,此时,若执行结果为空,也会调用处理组件处理触发事件。
此外,作为其它可选方式,在某些实现情况中,至少一个第一插件执行的第一操作开是指对触发事件的处理操作,此时,处理组件处理触发事件的处理操作可以为空操作,或者,处理组件处理触发事件的处理操作可以是基于执行结果,反馈执行结果或者触发执行下一个处理操作等,反馈执行结果可以是生产者或消费者反馈或者向执行下一个处理操作的处理组件反馈等,可以结合实际运行情况进行设定等。
304:处理组件执行结束,若处理组件被调用之后预留接口,调用接口对应的至少一个第二插件,以实现至少一个第二操作。
处理组件执行结束之后,若该处理组件调用之后也预留了接口,则可以调用接口对应的至少一个第二插件,以实现至少一个第二操作。
可选地,若接口对应多个第二插件的情况下,可以按照多个第一插件的调用优先级依次调用多个第二插件。因此,调用接口对应的至少一个第二插件,以实现至少一个第二操作可以包括:按照接口对应的至少一个第二插件的调用优先级,依次调用至少一个第二插件。
此外,该任一个第一插件可以根据触发事件,选择执行或者不执行第一操作等,不执行第一操作,第一操作的执行结果即为空等。
需要说明的是,第一插件以及第二插件中的第一以及第二仅是为了描述上区分被调用之前的接口和被调用之后的接口所对应的插件,并不表示第一插件和第二插件之间具有诸如递进、因果等关系。
本实施例中,消息队列系统的节点中的任一处理组件被调用之前和/或被调用之后可以预留接口,从而节点启动可以加载节点中基于接口所开发的插件,并在任一个处理组件被调用之前,若其存在接口,则首先调用接口对应的至少一个第一插件,以实现至少一个第一操作,至少一个第一插件执行结束之后,在调用处理组件执行,而若处理组件执行结束之后,存在接口,则可以继续调用该接口对应的至少一个第二插件,以实现至少一个第二操作。通过插件可以实现不同功能操作,且由于插件容易更新和修改,无需修改节点的内核代码,不会影响节点系统的稳定性,且可满足不同使用方的个性化要求,提高了节点灵活性。
其中,处理组件执行结束之后,可以直接反馈处理结果,在某些实现情况下,也可以是根据至少一个第二插件的执行结果,反馈处理组件的处理结果。
其中,执行结果例如可以包括执行成功或执行失败,若执行成功,再反馈处理组件的处理结果,若执行失败,则可以结束流程或者反馈处理组件执行失败通知等。
该处理组件的处理结果可以作为新的触发事件,以触发调用任意处理组件等。此外,结合前文描述可知,在某些实现情况下,该处理组件的处理结果可以包括至少一个第一插件的执行结果。
当然,在某些实现情况下,该处理结果也可以是包括至少一个第二插件的执行结果等。
在实际应用中,可以在消息队列系统的生产者、消费者、中转服务端或命名服务端中预留接口以开发插件,实现符合特定要求,如使用方个性化要求或者方便修改更新等要求的功能开发。
比如,对于中转服务端,中转服务可以包括基于生产者或消费者发送的任意请求而被调用的客户端处理组件。
中转服务端可以至少在客户端处理组件被调用之前预留接口;基于客户端处理组件被调用之前预留接口开发的插件包括鉴权插件,用于对请求进行鉴权。
相应的,中转服务端检测到针对客户端处理组件的触发事件,调用的至少一个第一插件可以包括鉴权插件,用于对请求进行鉴权;客户端处理组件至少在鉴权插件鉴权成功之后,处理请求。
其中,针对客户端处理组件的触发事件即可以是指接收到生产者或消费者发送的任意请求,该任意请求例如可以包括建连请求、心跳请求、消息发布请求、或消息消费请求等。
又如,对于中转服务端,中转服务端可以基于生产者发布的半事务消息而被调用的事务消息生产组件和基于生产者提交的事务消息确认请求而被调用的事务消息确认组件。
中转服务端可以至少在事务消息生产组件被调用之前预留接口以及在事务消息确认组件被调用之前预留接口;基于事务消息生产组件被调用之前预留接口开发的插件包括事务消息生产插件,用以将生产者发布的半事务消息暂存至指定存储引擎中;基于事务消息确认组件被调用之前预留接口开发的插件包括事务消息确认插件,用以从指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中。
相应的,中转服务端检测到针对事务消息生产组件的触发事件,调用的至少一个第一插件包括事务消息生产插件,用于将生产者发布的半事务消息暂存至指定存储引擎中;
检测到针对事务消息确认组件的触发事件,调用的至少一个插件包括事务消息确认插件,用于从指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中。
其中,针对事务消息生产组件的触发事件可以包括接收到生产者的事务消息申请请求、以及生产者的事务消息发布请求等,其中,事务消息申请请求用于获取事务标识,事务发布请求中包括基于事务标识发布的半事务消息等,事务消息生产插件基于事务申请请求,可以执行空操作,由事务消息生产组件处理该事务申请请求为生产者分配事务标识;事务消息生产插件基于事务消息发布请求,可以将发布的半事务消息暂存至指定存储引擎中,事务消息处理组件基于事务消息处理插件的执行结果,可以向生产者反馈处理确认通知等。
事务消息确认组件的触发事件可以包括接收到生产者对应的事务消息确认请求等,事务消息确认插件可以基于事务消息确认请求,将指定存储引擎中属于同一事务的半事务消息写入消息队列等,事务消息确认组件用以向生产者反馈处理确认通知等。
上述事务消息申请请求、事务消息发布请求、事务消息确认请求可以经由客户端处理组件而发送至事务消息生产组件或事务消息确认组件,则客户端处理组件被调用之前,意即发送这些请求之前,结合前文描述可知,可以首先调用鉴权插件对生产者进行鉴权,鉴权成功之后,再调用客户端处理组件将请求发送至事务消息生产组件或事务消息确认组件。
又如,对于中转服务端,可以在任意处理组件被调用之前和/或被调用之后预留接口开发的插件包括采集插件,用于采集并统计任一个消息的消息轨迹数据。
相应的,中转服务端,基于任意组件被调用之前或被调用之后预留的接口,所调用的至少一个第一插件或至少一个第二插件中可以包括采集插件,采集并统计任一个消息的消息轨迹数据。
可以在每个处理组件被调用之前以及被调用之后均预留接口,并开发采集插件,以实现消息轨迹数据的采集和统计等。
又如,对于命名服务端,命名服务端可以包括通用处理组件;命名服务端可以至少在通用处理组件被调用之前预留接口;基于通用处理组件被调用之前预留接口开发的插件包括服务发现插件,用于根据生产者或消息者发送的信息获取请求,向生产端或消费端反馈路由信息。
相应的,命名服务端检测到针对通用处理组件的触发事件,可以调用服务发现插件,以根据生产者或消息者发送的消息获取请求,向生产端或消费端反馈路由信息。
其中,针对通用处理组件的触发事件可以包括接收到生产者或消息者发送的信息获取请求、以及接收到生产者或消息者发送的建连请求、以及接收到中转服务端发送的注册请求等。其中,该服务发现插件针对除去生产者或消息者发送的消息获取请求之外的触发事件,所执行的第一操作可以为空,意即服务发现插件对除去生产者或消息者发送的信息获取请求之外的触发事件可以不执行操作。第一操作为空的情况下可以直接调用通用处理组件处理触发事件等。
又如,对于中转服务端,中转服务端中可以包括消息存储组件,用以将生产者发布的消息写入消息队列,或者将消费者从消息队列中订阅的消息投递至消费者等,在消息存储组件中被调用之后可以预留接口,基于消息存储组件被调用之后预留接口可以开发指标统计插件,用以采集并统计消息队列的指标数据,指标数据可以表示消息队列的运行情况,例如可以包括每秒生产或消费消息的次数、大小、成功数、失败数等。
可选地,指标采集插件还可以将指标数据发送至运维人员等,以方便运维人员了解系统的运行情况。
又如,对于命名服务端,基于通用处理组件被调用之前预留接口开发的插件还可以包括鉴权插件,用于对生产者或消息者发送的任意请求进行鉴权处理,鉴权成功之后,再调用通用处理组件处理请求等。
又如,中转服务端中,还可以包括定时消息处理组件、延时消息处理组件,结合不同实际需求,可以在定时消息处理组件被调用之前预留接口,也可以在延时消息处理组件被调用之前预留接口,从而基于定时消息处理组件被调用之前预留接口可以开发定时消息处理插件,用于将生产者发布的定时消息暂存至指定存储引擎中,到达定时时间之后再写入消息队列等;当然,基于定时消息处理组件被调用之前预留接口可以开发定时消息处理插件;基于延时消息处理组件之前预留接口可以开发延时消息处理插件,用于将生产者发布的延时消息暂存至指定存储引擎中,等待一定时间之后再写入消息队列等。
结合上述描述可知,基于通用处理组件被调用之前预留接口开发的插件可以包括鉴权插件以及服务发现插件等,鉴权插件以及服务发现插件可以设置调用优先级,根据调用优先级可以确定调用顺序,如先调用鉴权插件,再调用服务发现插件等。此外,可以是在鉴权插件鉴权成功之后,再调用服务发现插件,负责可以直接结束当前处理流程等。
上述仅是举例说明了若干功能的开发和控制场景,需要说明的是,本申请并不仅限定上述几种实现场景,此处将不再穷举,下面主要以鉴权功能以及事务消息处理功能为例,对本申请技术方案进行详细介绍。
在一个实际应用中,为了保证安全性,消息队列系统的中转服务端或命名服务端通常需要对客户端(生产者或消费者)进行鉴权,以确认身份是否合法等等。目前,鉴权操作是由中转服务端中对客户端发送的请求进行处理的客户端处理组件执行,客户端处理组件接收到客户端的任意请求之后,会首先进行鉴权,再根据鉴权结果决定是否处理该请求等。由于使用方存在使用自己的鉴权方式进行鉴权的需求,而若更新鉴权方式就需要修改内核代码,而采用本申请实施例的技术方案,可以方便、灵活的实现鉴权功能的开发和修改等。下面以中转服务端进行鉴权操作开发为例进行介绍,如图4所示的开发方法,可以包括以下几个步骤:
401:确定消息队列系统中的中转服务端的处理流程。
该处理流程涉及至少一个处理操作,该至少一个处理操作可以包括处理生产者或消费者发送的任意请求的请求处理操作。该请求例如可以包括建连请求、消息生产请求、消息消费请求、心跳请求等。
402:在中转服务端中,执行请求处理操作的客户端处理组件被调用之前预留接口。
403:确定基于客户端处理组件被调用之前预留的接口开发获得的鉴权插件的插件文件。
404:将插件文件部署至中转服务端的指定存储位置。
相应的,如图5所示,中转服务端的控制方法可以包括如下几个步骤:
501:扫描指定存储位置中的插件文件并加载对应插件。
502:接收到生产者或消费者发送的任意请求,请求调用客户端处理组件;
503:若客户端处理组件被调用之前预留接口,调用该接口对应的鉴权插件,以进行鉴权操作。
504:若鉴权结果为鉴权成功,调用客户端处理组件处理该请求。
505:若鉴权结果为鉴权失败,向生产者或消费者反馈鉴权失败通知。
在又一个实际应用,消息队列系统的特色功能是可以实现事务消息处理。中转服务端中负责进行事务消息处理的处理组件可以划分为事务消息生产组件以及事务消息确认组件。事务消息的处理流程可以包括:生产者首先发送事务消息申请请求,由事务消息生产组件为该生产者分配事务消息标识;生产者接收到事务消息标识之后,进行事务处理,并基于事务消息标识分别发送至少一条半事务消息;事务消息生产组件会将至少一条半事务消息写入数据库中;事务处理结束之后,生产者发送事务消息确认请求,由事务消息确认组件再将数据库中的属于同一个事务的所有半事务消息写入消息队列中。实际应用中,不同使用方可能希望基于不同存储引擎实现事务消息,意即半事务消息暂存至特定存储引擎中等,采用本申请实施例的技术方案即可以方便灵活的实现事务消息的处理。
为了实现事务消息处理,如图6所示的开发方法可以包括以下几个步骤:
601:确定消息队列系统中的中转服务端的事务消息处理流程。
事务消息处理流程涉及至少一个处理操作。
602:在中转服务端中,事务消息处理组件以及事务消息确认组件被调用之前预留接口。
603:确定基于事务消息处理组件被调用之前预留的接口开发获得的事务消息处理插件的插件文件,以及基于事务消息确认组件被调用之前预留的接口开发获得事务消息处理插件的插件文件。
604:将事务消息处理插件的插件文件以及事务消息处理插件的插件文件部署至中转服务端中的指定存储位置。
相应的,中转服务端执行的控制方法如图7所示,可以包括以下几个步骤:
701:扫描指定存储位置中的插件文件并加载对应插件。
702:检测到针对事务消息处理组件的触发事件,调用事务消息处理插件。
703:若触发事件为生产者发送的事务消息发布请求,利用事务消息处理插件将事务消息发布请求中的半事务消息暂存至指定存储引擎中。
704:基于事务消息处理插件的执行结果,调用事务消息处理组件向生产者反馈对应的处理确认通知,以通知生产者消息暂存成功等。
705:接收到生产者发生的事务消息确认请求,调用事务消息确认插件。
706:利用事务消息确认插件将指定存储引擎中属于同一事务的所有半事务消息写入消息队列。
707:基于事务消息确认插件的执行结果,调用事务消息确认组件向生产者反馈对应的处理确认通知,以通知生产者消息写入成功等。
可选地,实际应用中,生产者发送的相应请求可以经由至少一个其它处理组件进行相应处理之后再发送至事务消息生成组件或事务消息确认组件,向生产者反馈的处理确认通知也可以经由至少一个其它处理组件而发送至生产者等,可以结合不同实际应用情况信息设定等,不申请对此不进行具体限定。
图8为本申请提供的一种开发装置一个实施例的结构示意图,该装置可以包括:
第一确定模块801,用于确定消息队列系统中任一节点的处理流程;处理流程涉及至少一个处理操作;
配置模块802,用于在节点中,执行任一处理操作的处理组件被调用之前和/或被调用之后预留接口;
第二确定模块803,用于确定基于预留的至少一个接口进行插件开发获得的插件文件;
部署模块804,用于将插件文件部署至节点中的指定存储位置。
图8的开发装置可以执行图2所示实施例所述的开发方法,其实现原理和技术效果不再赘述。对于上述实施例中的开发装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图8所示实施例的开发装置可以实现为计算设备,如图9所示,该计算设备可以包括存储组件901以及处理组件902;
存储组件901存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件902调用执行,用以实现如图2所示的开发方法。
当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
其中,该计算设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时计算设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。
当计算设备为物理设备时,可以实现成多个服务器或终端设备组成的分布式集群,也可以实现成单个服务器或单个终端设备。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图2所示实施例的开发方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时可以实现上述图2所示实施例的开发方法。
图10为本申请提供的一种控制装置一个实施例的结构示意图,该装置可以包括:
加载模块1001,用于扫描指定存储位置中的插件文件并加载对应插件;
第一调用模块1002,用于检测到针对任一处理组件的触发事件,若处理组件被调用之前预留接口,调用接口对应的至少一个第一插件,以实现至少一个第一操作;
第二调用模块1003,用于根据至少一个第一插件的执行结果,调用处理组件处理触发事件;
第三调用模块1004,用于该处理组件执行结束,若处理组件被调用之后预留接口,调用并执行接口对应的至少一个第二插件,以实现至少一个第二操作。
图10所述的开发装置可以执行图3所示实施例所述的控制方法,其实现原理和技术效果不再赘述。对于上述实施例中的控制装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图10所示实施例的控制装置可以实现为计算设备,如图11所示,该计算设备可以包括存储组件1101以及处理组件1102;
存储组件1101存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件1102调用执行,用以实现如图3所示的控制方法。
当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
其中,该计算设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时计算设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。
当计算设备为物理设备时,可以实现成多个服务器或终端设备组成的分布式集群,也可以实现成单个服务器或单个终端设备。
实际应用中,该计算设备可以具体部署消息队列系统中的节点,实现为消息队列系统中的生产者、消费者、中转服务端或命名服务端等。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图3所示实施例的控制方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时可以实现上述图3所示实施例的控制方法。
其中,前文相应实施例中的处理组件可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件被配置为存储各种类型的数据以支持在设备中操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种开发方法,其特征在于,包括:
确定消息队列系统中任一节点的处理流程;所述处理流程涉及至少一个处理操作;
在所述节点中,执行任一处理操作的处理组件被调用之前和/或被调用之后预留接口;
确定基于预留的至少一个接口进行插件开发获得的插件文件;
将所述插件文件部署至所述节点中的指定存储位置。
2.根据权利要求1所述的方法,其特征在于,所述消息队列系统为RocketMQ系统。
3.根据权利要求1或2所述的方法,其特征在于,所述插件文件包括代码包文件及描述文件;所述描述文件定义了所述插件的标识、版本、调用优先级及调用类库;
所述插件文件部署至所述节点中的指定存储位置包括:
判断所述指定存储位置是否存在与所述插件文件标识相同的已有文件;
若是,利用所述插件文件更新所述已有文件。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
将在所述节点中预留的接口定义在软件开发工具包中;其中,所述插件文件具体根据待扩展功能,从所述软件开发工具包中选择至少一个接口进行插件开发获得。
5.根据权利要求1或2所述的方法,其特征在于,所述节点为中转服务端;所述中转服务端包括基于生产者或消费者发送的任意请求而被调用的客户端处理组件;所述中转服务端中至少在所述客户端处理组件被调用之前预留接口;基于所述客户端处理组件被调用之前预留接口开发的插件包括鉴权插件,用于对所述请求进行鉴权;
或者,
所述节点为中转服务端;所述中转服务端包括基于所述生产者发布的半事务消息而被调用的事务消息生产组件,及基于所述生产者提交的事务消息确认通知而被调用的事务消息确认组件;
所述中转服务端中至少在所述事务消息生产组件被调用之前预留接口以及在所述事务消息确认组件被调用之前预留接口;基于所述事务消息生产组件被调用之前预留接口开发的插件包括事务消息生产插件,用以将所述生产者发布的事务消息暂存至指定存储引擎中;基于所述事务消息确认组件被调用之前预留接口开发的插件包括事务消息确认插件,用以从所述指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中;
或者,
所述节点为中转服务端;基于任一处理组件被调用之前和/或被调用之后预留接口开发的插件包括采集插件,用于采集并统计任一个消息的消息轨迹数据;
或者,
所述节点为中转服务端;所述中转服务端包括将所述生产者发布的消息写入消息队列,以及将所述消息队列中所以三个月消息者订阅的消息投递至所述消费者的消息存储组件;在所述消息存储组件被调用之后预留接口;基于所述消息存储组件被调用之后预留接口开发的插件包括指标统计插件,用于采集并统计所述消息队列的指标数据;
或者:
所述节点为命名服务端;所述命名服务端包括通用处理组件;所述命名服务端中至少在所述通用处理组件被调用之前预留接口;基于所述通用处理组件被调用之前预留接口开发的插件包括服务发现插件,用于根据生产者或消息者发送的消息获取请求,向所述生产者或所述消费者反馈路由信息。
6.一种控制方法,其特征在于,应用于消息队列系统的节点中,所述方法包括:
扫描指定存储位置中的插件文件并加载对应插件;
检测到针对任一处理组件的触发事件,若所述处理组件被调用之前预留接口,调用所述接口对应的至少一个第一插件,以实现至少一个第一操作;
根据所述至少一个第一插件的执行结果,调用所述处理组件处理所述触发事件;
所述处理组件执行结束,若所述处理组件被调用之后预留接口,调用并执行所述接口对应的至少一个第二插件,以实现至少一个第二操作。
7.根据权利要求6所述的方法,其特征在于,所述消息队列系统为RocketMQ系统。
8.根据权利要求6或7所述的方法,其特征在于,还包括:
根据所述至少一个第二插件的执行结果,反馈所述处理组件的处理结果。
9.根据权利要求6或7所述的方法,其特征在于,所述调用并执行所述接口对应的至少一个第一插件包括:
按照所述接口对应的至少一个第一插件的调用优先级,依次调用所述接口对应的至少一个第一插件;
所述调用所述接口对应的至少一个第二插件,以实现至少一个第二操作包括:
按照所述接口对应的至少一个第二插件的调用优先级,依次调用所述至少一个第二插件。
10.根据权利要求6或7所述的方法,其特征在于,所述扫描指定存储位置中的插件文件并加载对应的插件包括:
扫描指定存储位置中的插件文件,并采用不同类加载器加载对应插件。
11.根据权利要求6或7所述的方法,其特征在于,所述节点包括中转服务端;所述中转服务端包括基于生产者或消费者发送的任意请求而被调用的客户端处理组件;所述至少一个第一插件包括鉴权插件,用于对所述请求进行鉴权;
或者,
所述节点为中转服务端;所述中转服务端包括基于生产者发布的半事务消息而被调用的事务消息生产组件和基于生产者提交的事务消息确认通知而被调用的事务消息确认组件;所述事务消息生产组件对应的至少一个第一插件包括事务消息生产插件,用以将生产者发布的事务消息暂存至指定存储引擎中;所述事务消息确认组件对应的至少一个第一插件包括事务消息确认插件,用于从所述指定存储引擎中将属于同一事务的多条半事务消息作为事务消息写入消息队列中;
或者:
所述节点为中转服务端;所述至少一个第一插件或所述至少一个第二插件包括采集插件,用于采集并统计任一个消息的消息轨迹数据;
或者:
所述节点为命名服务端;所述命名服务端包括通用处理组件;所述至少一个第一插件包括服务发现插件,用于根据生产者或消息端的路由获取请求,向生产端或消费端反馈路由信息。
12.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如权利要求6~11任一项所述的控制方法。
CN202110963307.1A 2021-08-20 2021-08-20 开发方法、控制方法及计算设备 Pending CN113849320A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110963307.1A CN113849320A (zh) 2021-08-20 2021-08-20 开发方法、控制方法及计算设备
PCT/SG2022/050463 WO2023022652A2 (zh) 2021-08-20 2022-07-01 开发方法、控制方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110963307.1A CN113849320A (zh) 2021-08-20 2021-08-20 开发方法、控制方法及计算设备

Publications (1)

Publication Number Publication Date
CN113849320A true CN113849320A (zh) 2021-12-28

Family

ID=78975895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110963307.1A Pending CN113849320A (zh) 2021-08-20 2021-08-20 开发方法、控制方法及计算设备

Country Status (2)

Country Link
CN (1) CN113849320A (zh)
WO (1) WO2023022652A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114598593A (zh) * 2022-02-16 2022-06-07 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114827278A (zh) * 2022-06-24 2022-07-29 小米汽车科技有限公司 基于消息队列的任务调度方法、系统、装置及设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103389905B (zh) * 2012-05-10 2016-08-17 航天信息股份有限公司 插件加载方法及系统
CN106155639B (zh) * 2015-03-24 2020-02-07 阿里巴巴集团控股有限公司 一种操作界面的加载方法及装置
CN106385434B (zh) * 2016-08-31 2019-09-03 广州品唯软件有限公司 一种用户交互方法、设备及系统
CN106375567A (zh) * 2016-08-31 2017-02-01 广州品唯软件有限公司 一种插件发布方法、系统、客户端和服务端
CN108446140A (zh) * 2017-02-15 2018-08-24 阿里巴巴集团控股有限公司 界面显示方法、装置、设备和操作系统
CN108446141B (zh) * 2018-02-28 2021-01-12 武汉智博创享科技股份有限公司 一种Web前端插件及基于Web前端插件进行调度和通信的方法
US20200379781A1 (en) * 2019-05-28 2020-12-03 Netapp, Inc. Methods and systems for plugin development in a networked computing environment
CN111552524B (zh) * 2020-05-06 2023-10-13 Oppo(重庆)智能科技有限公司 一种插件加载方法、装置及计算机可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114598593A (zh) * 2022-02-16 2022-06-07 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114598593B (zh) * 2022-02-16 2023-08-29 阿里巴巴(中国)有限公司 消息处理方法、系统、计算设备及计算机存储介质
CN114827278A (zh) * 2022-06-24 2022-07-29 小米汽车科技有限公司 基于消息队列的任务调度方法、系统、装置及设备
CN114827278B (zh) * 2022-06-24 2022-09-02 小米汽车科技有限公司 基于消息队列的任务调度方法、系统、装置及设备

Also Published As

Publication number Publication date
WO2023022652A3 (zh) 2023-05-04
WO2023022652A2 (zh) 2023-02-23

Similar Documents

Publication Publication Date Title
CN109739573B (zh) 实现api接口调用的处理方法及装置、实现api接口的系统
US20150100655A1 (en) On-demand mailbox synchronization and migration system
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
CN113849320A (zh) 开发方法、控制方法及计算设备
CN111258723B (zh) 分布式系统的事务处理方法、装置、系统、介质及设备
CN114615340B (zh) 一种请求处理方法、装置、计算机设备和存储装置
CN111258726B (zh) 任务调度方法和装置
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
CN112231069A (zh) 事务标识的处理方法、装置及电子设备
CN113778652A (zh) 一种任务调度方法、装置、电子设备及存储介质
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
CN114116149A (zh) 一种任务调度方法、装置、设备及介质
CN111988429A (zh) 算法调度方法以及系统
US20070050447A1 (en) Method and device arrangement for managing a client/server environment
CN111291062A (zh) 数据同步写入方法、装置、计算机设备及存储介质
CN113360210A (zh) 数据对账方法、装置、计算机设备和存储介质
CN112825525B (zh) 用于处理事务的方法和装置
CN112698929A (zh) 一种信息采集方法及装置
CN117331576A (zh) 应用预下载方法、装置、计算机、存储介质
CN113407551A (zh) 数据一致性确定方法、装置、设备及存储介质
CN114205354B (zh) 事件管理系统、事件管理方法、服务器及存储介质
CN114675954A (zh) 任务调度方法及装置
CN111190637B (zh) 一种版本文件发布的管理方法、装置以及系统
CN110162415B (zh) 用于处理数据请求的方法、服务器、装置及存储介质
CN112416980A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40070298

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240312

Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore

Applicant after: Alibaba Innovation Co.

Country or region after: Singapore

Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore

Applicant before: Alibaba Singapore Holdings Ltd.

Country or region before: Singapore