CN113542409B - 一种RocketMQ消息队列实例管理系统及处理方法 - Google Patents
一种RocketMQ消息队列实例管理系统及处理方法 Download PDFInfo
- Publication number
- CN113542409B CN113542409B CN202110796831.4A CN202110796831A CN113542409B CN 113542409 B CN113542409 B CN 113542409B CN 202110796831 A CN202110796831 A CN 202110796831A CN 113542409 B CN113542409 B CN 113542409B
- Authority
- CN
- China
- Prior art keywords
- script
- instance
- execution
- message queue
- module
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种RocketMQ消息队列实例管理系统及处理方法,涉及消息队列管理技术。针对现有技术中一个实例只能对应一个管理系统的问题提出本方案,主要将实例信息的Name Server地址、执行机器IP和所需参数封装成脚本执行所需要的参数填充到脚本执行请求中;将脚本发送到对应的执行机器上;然后遍历实例下每一组Name Server地址和执行机器IP以执行一次脚本调用任务。管理系统包括实例创建模块、脚本执行模块和脚本调用模块,联合执行所述RocketMQ消息队列实例处理方法。优点在于,将多个RocketMQ消息队列实例进行统一管理,降低了消息队列实例维护成本,同时也具备单机部署的现有RocketMQ消息队列控制台应用的核心功能。
Description
技术领域
本发明涉及消息队列的管理技术,尤其涉及一种RocketMQ消息队列实例管理系统及处理方法。
背景技术
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。
RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
RocketMQ的核心组件为Name Server和Broker,Broker为实际存储消息的地方,Name Server则充当路由器的作用,向客户端提供Broker上Topic的路由信息,使客户端能够根据路由正确地发送消息和消费消息。
mqadmin命令为RocketMQ自带的运维管理工具,其原理为通过Name Server获取到Broker地址,从而和Broker通信获取数据。
目前已经存在的RocketMQ控制台应用需要在每个RocketMQ消息队列实例上单独部署,只能同时查看和操作一个消息队列实例,不便于多个消息队列实例的管理。如果为了实现多个消息队列实例的管理,同时在多个实例上部署多个管理系统则增加了维护成本。
发明内容
本发明目的在于提供一种RocketMQ消息队列实例管理系统及处理方法,利用一个管理系统实现多个消息队列实例的管理。
本发明所述RocketMQ消息队列实例处理方法包括以下步骤:
S1、导入脚本,设置脚本的执行参数,将脚本信息保存至数据库;
S2、在触发脚本调用时,在数据库中查询脚本信息并填充至脚本请求中;根据需要执行脚本的实例id向数据库查询实例信息,将实例信息的Name Server地址、执行机器IP和所需参数封装成脚本执行所需要的参数填充到脚本执行请求中;
S3、将脚本请求发送至脚本执行模块等待处理;
S4、脚本执行模块收到脚本请求后进行解析,根据脚本id从数据库中查询脚本信息,对比脚本请求中的名称及参数进行校验;
S5、根据解析出的执行机器IP向数据库查询;
S6、根据脚本名称及执行机器IP,将脚本发送到对应的执行机器上;
S7、获取脚本执行结果并进行解析,如需要更新数据库,则将解析的结果保存到数据库中;返回步骤S2,遍历实例下每一组Name Server地址和执行机器IP;
S8.脚本调用模块结束一次脚本调用任务。
步骤S1具体为通过HTTP API导入脚本,导入的脚本是shell脚本。
脚本信息包含脚本唯一标识脚本id。
步骤S2中触发脚本调用可以是用户主动或者由定时任务触发。
步骤S4中从数据库中查询脚本信息包括:脚本名称、脚本存储路径以及脚本参数。
步骤S4对比脚本请求中的名称及参数进行校验时,若请求的脚本参数名称不对,则返回脚本参数不存在错误信息和HTTP错误响应码,然后执行步骤S8;若请求的脚本参数缺失,则返回脚本参数不能为空错误信息和HTTP错误响应码,然后执行步骤S8。
步骤S5向数据库查询后若执行机器的IP地址不存在,则返回执行机器IP不存在错误信息和HTTP错误响应码。
步骤S6具体为:脚本执行模块根据脚本存储路径判断脚本文件是否存在,若不存在,则返回脚本文件不存在错误信息和HTTP错误响应码,执行步骤S8;否则根据执行机器IP查询机器登录用户名和密码,进行远程文件传输,将脚本文件发送至执行机器中特定的目录下,最后在执行机器上执行脚本,执行参数为步骤S4中解析的脚本参数;执行机器IP使用实例下的Name Server地址,若执行超时,则中断执行,返回执行超时错误信息和HTTP错误响应码,否则返回执行结果。
在脚本文件发送至执行机器中特定的目录下时,若远程目录下存在同名文件则进行覆盖。
本发明所述RocketMQ消息队列实例管理系统,包括:
实例创建模块,用于创建消息队列新实例和接入已有消息队列实例,创建消息队列新实例时获取用户填写的实例创建表单,向脚本执行模块发出实例创建请求;
脚本执行模块,用于接收实例创建模块和脚本调用模块的请求,并根据不同的请求执行对应功能的脚本;
脚本调用模块,用于向脚本执行模块发起脚本执行请求,获取并解析脚本执行模块返回的结果;更新、查看和搜索当前消息队列实例上存在的Topic,根据用户需要创建和删除Topic,根据需求查看每个Topic的消费详情;更新和查看当前消息队列实例上存在的消费组,根据用户需要创建新的消费组,根据需求查看每个消费组的消费详情;查询已经发送到消息队列实例上的消息;用于查看所有已创建或者接入的消息队列实例信息,根据需求查看指定消息队列实例Name Server和Broker的部署信息,并实时监测Name Server和Broker的状态,实时更新Broker的流量数据;
所述的实例创建模块、脚本执行模块和脚本调用模块联合执行所述RocketMQ消息队列实例处理方法。
本发明所述RocketMQ消息队列实例管理系统及处理方法,其优点在于,脚本执行模块通过mqadmin命令实现的脚本向不同的RocketMQ消息队列实例执行功能相同的操作,从而将多个RocketMQ消息队列实例进行统一管理,降低了消息队列实例维护成本,同时也具备单机部署的现有RocketMQ消息队列控制台应用的核心功能,在实例创建模块的作用下,还可以手动接入已经存在的实例进行管理。
附图说明
图1是本发明所述RocketMQ消息队列实例管理系统的结构示意图。
图2是本发明所述RocketMQ消息队列实例处理方法的流程示意图。
具体实施方式
如图1所示,本发明所述RocketMQ消息队列实例管理系统主要包括实例创建模块、脚本执行模块和脚本调用模块。
实例创建模块,用于创建消息队列新实例和接入已有消息队列实例,创建消息队列新实例时获取用户填写的实例创建表单,向脚本执行模块发出实例创建请求。
脚本执行模块,用于接收实例创建模块和脚本调用模块的请求,并根据不同的请求执行对应功能的脚本。
脚本调用模块,用于向脚本执行模块发起脚本执行请求,获取并解析脚本执行模块返回的结果。
所述的脚本调用模块还包括以下几个子模块:
Topic管理模块,用于更新、查看和搜索当前消息队列实例上存在的Topic,并可根据用户需要创建和删除Topic,还能够详细查看每个Topic的消费详情;
Group管理模块,用于更新和查看当前消息队列实例上存在的消费组,并可根据用户需要创建新的消费组,还能够详细查看每个消费组的消费详情;
消息查询模块,用于查询已经发送到消息队列实例上的消息;
实例信息模块,用于查看所有已创建或者接入的消息队列实例信息,并可查看指定消息队列实例Name Server和Broker的部署信息,并实时监测Name Server和Broker的状态,实时更新Broker的流量数据。
所述的实例创建模块、脚本执行模块和脚本调用模块联合执行如下的RocketMQ消息队列实例处理方法。
如图2所示,一种RocketMQ消息队列管理方法,包括以下步骤:
S1.脚本执行模块通过HTTP API导入shell脚本,并设置脚本的执行参数,导入成功后,将脚本信息保存到数据库中,脚本信息包含脚本唯一标识脚本id。具体的,以Topic信息更新为例,Topic信息查询脚本包含mqadmin命令statsAll,该命令所需参数为NameServer地址,将脚本文件上传后,设置脚本参数名name_server,提交到数据库中。
S2.用户或定时任务触发脚本调用模块的操作,脚本调用模块向数据库中查询脚本信息,填充到脚本请求中,根据需要执行脚本的实例id向数据库查询实例信息,将实例信息的Name Server地址、执行机器IP和其他所需参数封装成脚本执行所需要的参数填充到脚本执行请求中。具体的,以Topic信息更新为例,Topic管理子模块向数据库查询Topic信息更新脚本,再根据用户操作的实例的实例id查询Name Server地址和执行机器的IP地址,若实例包含多个Name Server,则遍历选取其中一组Name Server地址和执行机器IP,将Topic信息更新脚本、Name Server地址、执行机器IP地址填充到脚本请求中。若执行需要更多参数的脚本,也需要一起将对应脚本执行模块中导入脚本时设置的参数名称以及参数的值填充到脚本请求中。
S3.脚本调用模块将封装好的脚本请求发送给脚本执行模块,并等待脚本执行模块的通知。
S4.脚本执行模块收到脚本执行请求后,解析脚本信息、脚本参数和执行机器IP,根据脚本信息中的脚本id从数据库中查询脚本信息,包括脚本名称、脚本存储路径以及所述步骤S1中设置好的脚本参数,然后对比脚本执行请求中的参数进行校验。若请求的脚本参数名称不对,则返回脚本参数不存在错误信息和HTTP错误响应码,执行步骤S8;若请求的脚本参数缺少,则返回脚本参数不能为空错误信息和HTTP错误响应码,执行步骤S8。
S5.所述脚本执行模块根据步骤S4中解析的执行机器IP向数据库查询,若执行机器的IP地址不存在,则返回执行机器IP地址不存在错误信息和HTTP错误响应码。
S6.所述脚本执行模块根据步骤S4中解析的脚本名称、脚本存储路径执行机器IP地址,将脚本发送到执行机器上,具体的,脚本执行模块根据脚本存储路径判断脚本文件是否存在,若不存在,则返回脚本文件不存在错误信息和HTTP错误响应码,执行步骤S8。否则根据执行机器IP查询机器登录用户名和密码,进行远程文件传输,将脚本文件发送至执行机器下特定的目录下,若远程目录下存在同名文件则进行覆盖,最后在执行机器上执行脚本,执行参数为步骤S4中解析的脚本参数,执行机器IP使用了实例下的Name Server地址。若执行超时,则中断执行,返回执行超时错误信息和HTTP错误响应码,否则返回执行结果。
S7.所述脚本调用模块获取脚本执行结果,并对执行结果进行解析,如果需要更新数据库,则将解析的结果保存到数据库中,若解析结果中包含RemoteConnectException字符串,则认为Name Server不可用,回到步骤S2,遍历下一组Name Server地址和执行机器IP,若已经是最后一组Name Server地址和执行机器IP,则向用户反馈无法连接NameServer。具体的,以Topic信息更新为例,正常的执行结果包含topic名称、消费组名称、生产量、消费量等信息,Topic管理子模块解析结果后,得到一组新数据,并根据实例id向数据库查询Topic信息表的旧数据,Topic管理子对照新数据对旧数据新增、删除和更新,重新保存到数据库中。
S8.脚本调用模块结束一次脚本调用任务。
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (9)
1.一种RocketMQ消息队列实例处理方法,其特征在于,包括以下步骤:
S1、导入脚本,设置脚本的执行参数,将脚本信息保存至数据库;所述脚本包含mqadmin命令;
S2、在触发脚本调用时,在数据库中查询脚本信息并填充至脚本请求中;根据需要执行脚本的实例id向数据库查询实例信息,将实例信息的Name Server地址、执行机器IP和所需参数封装成脚本执行所需要的参数填充到脚本执行请求中;
S3、将脚本请求发送至脚本执行模块等待处理;
S4、脚本执行模块收到脚本请求后进行解析,根据脚本id从数据库中查询脚本信息,对比脚本请求中的名称及参数进行校验;
S5、根据解析出的执行机器IP向数据库查询,查询后若执行机器的IP地址不存在,则返回执行机器IP不存在错误信息和HTTP错误响应码;
S6、根据脚本名称及执行机器IP,将脚本发送到对应的执行机器上,在执行机器上执行脚本;
S7、获取脚本执行结果并进行解析,如需要更新数据库,则将解析的结果保存到数据库中;返回步骤S2,遍历实例下每一组Name Server地址和执行机器IP;
S8.脚本调用模块结束一次脚本调用任务。
2.根据权利要求1所述RocketMQ消息队列实例处理方法,其特征在于,步骤S1具体为通过HTTP API导入脚本,导入的脚本是shell脚本。
3.根据权利要求2所述RocketMQ消息队列实例处理方法,其特征在于,脚本信息包含脚本唯一标识脚本id。
4.根据权利要求1所述RocketMQ消息队列实例处理方法,其特征在于,步骤S2中触发脚本调用可以是用户主动或者由定时任务触发。
5.根据权利要求1所述RocketMQ消息队列实例处理方法,其特征在于,步骤S4中从数据库中查询脚本信息包括:脚本名称、脚本存储路径以及脚本参数。
6.根据权利要求5所述RocketMQ消息队列实例处理方法,其特征在于,步骤S4对比脚本请求中的名称及参数进行校验时,若请求的脚本参数名称不对,则返回脚本参数不存在错误信息和HTTP错误响应码,然后执行步骤S8;若请求的脚本参数缺失,则返回脚本参数不能为空错误信息和HTTP错误响应码,然后执行步骤S8。
7.根据权利要求1所述RocketMQ消息队列实例处理方法,其特征在于,步骤S6具体为:脚本执行模块根据脚本存储路径判断脚本文件是否存在,若不存在,则返回脚本文件不存在错误信息和HTTP错误响应码,执行步骤S8;否则根据执行机器IP查询机器登录用户名和密码,进行远程文件传输,将脚本文件发送至执行机器中特定的目录下,最后在执行机器上执行脚本,执行参数为步骤S4中解析的脚本参数;执行机器IP使用实例下的Name Server地址,若执行超时,则中断执行,返回执行超时错误信息和HTTP错误响应码,否则返回执行结果。
8.根据权利要求7所述RocketMQ消息队列实例处理方法,其特征在于,在脚本文件发送至执行机器中特定的目录下时,若远程目录下存在同名文件则进行覆盖。
9.一种RocketMQ消息队列实例管理系统,其特征在于,包括:
实例创建模块,用于创建消息队列新实例和接入已有消息队列实例,创建消息队列新实例时获取用户填写的实例创建表单,向脚本执行模块发出实例创建请求;
脚本执行模块,用于接收实例创建模块和脚本调用模块的请求,并根据不同的请求执行对应功能的脚本;
脚本调用模块,用于向脚本执行模块发起脚本执行请求,获取并解析脚本执行模块返回的结果;更新、查看和搜索当前消息队列实例上存在的Topic,根据用户需要创建和删除Topic,根据需求查看每个Topic的消费详情;更新和查看当前消息队列实例上存在的消费组,根据用户需要创建新的消费组,根据需求查看每个消费组的消费详情;查询已经发送到消息队列实例上的消息;用于查看所有已创建或者接入的消息队列实例信息,根据需求查看指定消息队列实例Name Server和Broker的部署信息,并实时监测Name Server和Broker的状态,实时更新Broker的流量数据;
所述的实例创建模块、脚本执行模块和脚本调用模块联合执行权利要求1至8任一所述RocketMQ消息队列实例处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110796831.4A CN113542409B (zh) | 2021-07-14 | 2021-07-14 | 一种RocketMQ消息队列实例管理系统及处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110796831.4A CN113542409B (zh) | 2021-07-14 | 2021-07-14 | 一种RocketMQ消息队列实例管理系统及处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113542409A CN113542409A (zh) | 2021-10-22 |
CN113542409B true CN113542409B (zh) | 2022-07-01 |
Family
ID=78099116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110796831.4A Active CN113542409B (zh) | 2021-07-14 | 2021-07-14 | 一种RocketMQ消息队列实例管理系统及处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113542409B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080152B (zh) * | 2022-08-19 | 2022-12-27 | 飞狐信息技术(天津)有限公司 | 消息中间件的Broker配置方法、装置、计算机设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708619A (zh) * | 2020-08-20 | 2020-09-25 | 上海冰鉴信息科技有限公司 | 基于消息队列和数据库的分布式事务处理方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065684B2 (en) * | 2008-04-10 | 2011-11-22 | Dell Products L.P. | Automated scripting methods and media |
US20110289342A1 (en) * | 2010-05-21 | 2011-11-24 | Schaefer Diane E | Method for the file system of figure 7 for the cluster |
CN104731580B (zh) * | 2015-01-12 | 2018-02-06 | 上海新炬网络信息技术股份有限公司 | 基于Karaf与ActiveMQ的自动化运维系统及其实现方法 |
CN107911467B (zh) * | 2017-11-29 | 2020-09-29 | 浪潮云信息技术股份公司 | 一种脚本化操作的服务操作管理系统和方法 |
CN108055298A (zh) * | 2017-12-04 | 2018-05-18 | 泰康保险集团股份有限公司 | 用于控制消息队列的方法及装置 |
CN109889399A (zh) * | 2018-12-15 | 2019-06-14 | 中国平安人寿保险股份有限公司 | RocketMQ客户端连接数监控方法、装置、电子设备及存储介质 |
CN112181776A (zh) * | 2020-09-30 | 2021-01-05 | 银盛支付服务股份有限公司 | RocketMQ监控和告警通知方法、系统、电子设备及存储介质 |
CN112463410B (zh) * | 2020-12-08 | 2024-05-28 | 中国人寿保险股份有限公司 | 一种分布式消息架构管理方法、平台及电子设备 |
-
2021
- 2021-07-14 CN CN202110796831.4A patent/CN113542409B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708619A (zh) * | 2020-08-20 | 2020-09-25 | 上海冰鉴信息科技有限公司 | 基于消息队列和数据库的分布式事务处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113542409A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351283B (zh) | 一种数据传输方法、装置、设备及存储介质 | |
US20170185678A1 (en) | Crawler system and method | |
US8966121B2 (en) | Client-side management of domain name information | |
CN106612301B (zh) | 更新数据的推送方法和装置 | |
CN104219327B (zh) | 一种分布式缓存系统 | |
CN111970315A (zh) | 推送消息的方法、装置及系统 | |
CN103685590B (zh) | 获取ip地址的方法及系统 | |
JP5744717B2 (ja) | ディレクトリへのアクセスのための方法及びデバイス | |
CN110413418B (zh) | 缓存同步装置及方法,缓存同步系统、电子设备 | |
JP5753629B2 (ja) | モバイルブロードバンドデバイスを管理する方法、デバイス及びシステム | |
CN111885216B (zh) | Dns查询方法、装置、设备和存储介质 | |
CN113382282B (zh) | 一种页面资源访问方法、装置、电子设备和存储介质 | |
CN113645304B (zh) | 数据服务处理方法及相关设备 | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
US11695623B2 (en) | Method and apparatus for binding network card in multi-network card server, and electronic device and storage medium | |
CN108881066A (zh) | 一种路由请求的方法、接入服务器以及存储设备 | |
CN109309728A (zh) | 一种数据处理方法以及相关装置 | |
CN111984849A (zh) | 一种信息查询方法、装置、设备及介质 | |
US20100332582A1 (en) | Method and System for Service Contract Discovery | |
US8713088B2 (en) | Identifying users of remote sessions | |
CN113542409B (zh) | 一种RocketMQ消息队列实例管理系统及处理方法 | |
CN116708266A (zh) | 一种云服务拓扑图实时更新方法、装置、设备及介质 | |
CN115080272A (zh) | 一种业务数据处理方法、电子设备及存储介质 | |
CN111585963A (zh) | 一种数据获取方法、系统及存储介质 | |
CA2987316A1 (en) | Local object instance discovery for metric collection on network elements |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |