CN112087373B - 一种消息发送方法及业务装置 - Google Patents
一种消息发送方法及业务装置 Download PDFInfo
- Publication number
- CN112087373B CN112087373B CN202010992053.1A CN202010992053A CN112087373B CN 112087373 B CN112087373 B CN 112087373B CN 202010992053 A CN202010992053 A CN 202010992053A CN 112087373 B CN112087373 B CN 112087373B
- Authority
- CN
- China
- Prior art keywords
- message
- sent
- sending
- database
- service
- 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
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种消息发送方法及业务装置,其中消息发送方法,包括以下步骤:步骤1:业务***分别将各自的业务参数封装成消息事件并提交到消息队列;步骤2:消息处理***从所述消息队列接收消息事件,调用与所述消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据所述数据库ID将所述待发送消息存入数据库;步骤3:消息发送***轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,通过与所述hash值对应的节点及通道发送所述待发送消息。本发明消息解决传统消息嵌套在业务***的处理过程,业务和消息互相拖慢问题,以及业务集成的发送消息类型的可扩展性问题。
Description
技术领域
本发明涉及信息技术,尤其是一种消息发送方法及业务装置。
背景技术
在以往消息发送机制中,生成消息内容和发送消息部分都嵌套在业务***中。在集成或对接这些业务***过程中,当越来越多的业务需要发送越来越多种的消息,同时发送消息的数量也开始急剧上升,各类消息的生成和发送逻辑会混到一起,当要新增消息类型时不好扩展;消息发送机制嵌套在业务***的处理过程,一方面消息发送过程会拖慢业务处理的过程。另一方面,业务处理的过程也会拖慢消息的生成和发送。
发明内容
本发明的主要目的是克服现有技术的不足,提供一种消息发送方法及业务装置;
根据本说明书实施例的第一方面,提供一种消息发送方法,包括以下步骤:
步骤1:业务***分别将各自的业务参数封装成消息事件并提交到消息队列;
步骤2:消息处理***从所述消息队列接收消息事件,调用与所述消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据所述数据库ID将所述待发送消息存入数据库;
步骤3:消息发送***轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,通过与所述hash值对应的节点及通道发送所述待发送消息;
根据本说明书实施例的第二方面,提供业务装置,其特征在于,包括若干业务***,所述业务***用于业务处理以及将业务参数封装成消息事件并提交到消息队列;所述装置还包括消息处理***和消息发送***,其中所述消息处理***用于从所述消息队列接收消息事件,调用与所述消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据所述数据库ID将所述待发送消息存入数据库;所述消息发送***用于轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,通过与所述hash值对应的节点及通道发送所述待发送消息。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图;
图1为某优选实施方案中的业务装置的结构示意图;
图2为某优选实施方案中的方法流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子;
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、 “所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合;
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”;
参考图1,为某实施例中,本说明书提供的业务装置方案的***架构。如图所示,业务装置包括若干业务***、一个消息处理***和一个消息发送***。相对于现有的消息发送机制嵌套在业务***的处理过程,造成消息发送过程会拖慢业务处理的过程,以及业务处理的过程也会拖慢消息的生成和发送,本实施方案的业务***自身没有集成消息的处理和发送模块或单元,即每个业务***只专注于具体业务的处理。消息处理***和消息发送***是两个独立于业务***的***,其中消息处理***专注于各业务不同类型的消息生成,专注于各业务不同类型的消息生成。进而相对现有技术,业务***、消息处理***和消息发送***都具有实质的改进。具体来说:业务***用于业务处理以及将业务参数封装成消息事件并提交到消息队列;消息处理***用于从消息队列接收消息事件,调用与消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据数据库ID将待发送消息存入数据库;消息发送***用于轮询所述数据库并根据数据库ID顺序取出待发送消息,计算待发送消息对应的hash值,通过与hash值对应的节点及通道发送该待发送消息。这样,由于将消息的生成和发送独立出业务***,让业务***只处理业务。消息处理***重点在消息类型可扩展上。消息发送***重点在消息发送上。业务***对消息***的调用不只传业务参数,而改成将业务参数封装成消息事件;
在一实施例中,业务***,将业务参数封装成消息事件并提交到消息队列。其中消息事件可包含:{消息参数(即:业务参数),业务编码,消息发送策略,事件创建时间,事件ID}。消息队列,在业务***和消息处理***之间采用消息队列进行单向通信。使得业务***的业务处理和消息发送可以同时进行,互不影响。消息处理***生成待发的消息,再配上要发些消息的具体通道、内容格式说明、发送时要用到的相关配置。最后在存入数据库之前生成和时间顺序相对应的数据库ID,并存入数据库。消息存入数据库的数据库ID设计为时间顺序相对应,即:后***的数据库ID一定会比前***的数据库ID的值后面。这样设计一是保证***效率,另一方面,消息发送***高速取消息时,每次会记录本次所取待发送消息的数据库ID的最大值 ,下次取数据时以此值为分界,取下一批次的待发送消息。待发送消息的数据库ID设计为时间顺序相对应,能保证消息不会被重复取出;
又如图1所示,消息发送***具有消息派发模块,消息发送***轮询数据库并根据数据库ID顺序取出消息。消息发送***的消息派发模块会计算批量取出的消息的每个数据库ID对应的hash值。消息派发模块能够根据所述hash值,确定对应的统一发送通道并将待发送消息提交到统一发送通道,然后再通过所述统一发送通道派发至对应的一个或一个以上子通道进而发送所述待发送消息。消息派发模块根据hash值,决定将消息提交到多节点统一发送通道的某个节点上。统一发送通道再根据“具体通道”信息,决定由哪个子通道发送该条消息。具体子通道根据内容格式说明和相关配置发送消息。具体实施时,为每种消息定制专门的子发送通道。子发送通道可按需要增加。各子通道之间互不影响,从而保证消息发送类型的可扩展性和发送效率;
另外通过预设hash槽点,每个hash槽点对应会有一个统一发送通道节点。每增加一个统一发送通道节点,相应的会增加一个hash槽点。消息分派模块,会根据事件ID计算hash值。根据此值将消息发往对应的统一发送通道节点上。这样当消息量增加时,可增按需增加统一发送通道节点,从而保证消息高速发送效率;
如图1所示,消息处理***具有若干消息处理器,消息处理器根据业务***或消息类型定制配置;消息处理***接收消息事件后调用与消息事件适配的消息处理器生成待发送消息。例如:针对微信、支付宝、某产商A等应用的消息,可在消息处理***分别定制配置对应专门的消息处理器。这样,当有新的一类消息要加入消息发送时,只需要按约定新增一个消息处理器即可,并不会影响原其它处理器的逻辑,达到可按需求扩展的灵活性;
经实践检测,目前业务装置已连接了上万所学校,几十种业务上都有消息发送需求,满足多业务多种消息发送类型的消息发送需求,而且没有消息延迟发送,相对现有的消息发送机制取得了显著技术进步;
图2为某优选实施方案中的方法流程图,结合图1所示,消息发送方法包括步骤:
S01:业务***将各自的业务参数封装成消息事件并提交到消息队列:每个业务***本身不具有消息处理模块和消息发送模块。业务***分别将各自的业务参数封装成消息事件并提交到消息队列,并且与通过消息队列,在业务***和消息处理***之间采用消息队列进行单向通信。优选中,封装后的消息事件包含:{消息参数(即:业务参数),业务编码,消息发送策略,事件创建时间,事件ID};
S02:消息处理***从消息队列接收消息事件,生成待发送消息,存入数据库:消息处理***从消息队列接收消息事件,调用与消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据数据库ID将待发送消息存入数据库。消息处理***生成待发送消息时,同时预设hash槽点;
S03:消息发送***轮询数据库,通过与hash值对应的节点及通道发送待发送消息:消息发送***轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,通过与所述hash值对应的节点及通道发送所述待发送消息。消息发送***配置若干统一发送通道;所述hash值与所述统一发送通道一一对应。消息发送***的消息派发模块根据所述hash值,确定对应的统一发送通道并将待发送消息提交到统一发送通道,然后再通过统一发送通道派发至对应的一个或一个以上子通道进而发送待发送消息;
某一优选实施例中,发明方法还包括增加新的所述业务***或所述业务***增加新的消息类型时,在所述消息处理***中定制并增加与所述业务***或所述消息类型一一对应的消息处理器的步骤;
在上述实施例中,应理解,该消息处理器可以基于中央处理单元(英文: CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文: DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等,结合软件模块组合形成的具有特定业务处理或执行能力的处理器。另外通用处理器可以是微处理器或者该处理器也可以是 任何常规的处理器等;
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可;
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出;
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
Claims (7)
1.一种消息发送方法,其特征在于:包括以下步骤:
步骤1:业务***分别将各自的业务参数封装成消息事件并提交到消息队列;
步骤2:消息处理***从所述消息队列接收消息事件,调用与所述消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据所述数据库ID将所述待发送消息存入数据库;
步骤3:消息发送***轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,消息发送***配置若干统一发送通道;所述hash值与所述统一发送通道一一对应,根据所述hash值,确定对应的统一发送通道并将待发送消息提交到统一发送通道,为每种消息定制专门的子发送通道,然后再通过统一发送通道派发至对应的一个或一个以上子通道进而根据内容格式说明和相关配置发送待发送消息。
2.如权利要求1所述的消息发送方法,其特征在于,所述步骤1还包括所述业务***将各自的业务参数、以及与业务参数对应的业务编码、消息发送策略、事件创建时间、事件ID封装成消息事件。
3.如权利要求2所述的消息发送方法,其特征在于,所述步骤3中,所述消息发送***根据所述事件ID计算所述待发送消息对应的hash值。
4.如权利要求1所述的消息发送方法,其特征在于,所述方法还包括步骤4:增加新的所述业务***或所述业务***增加新的消息类型时,在所述消息处理***中定制并增加与所述业务***或所述消息类型一一对应的消息处理器。
5.如权利要求1所述的消息发送方法,其特征在于,所述步骤2中,所述消息处理***生成待发送消息时,同时预设hash槽点。
6.一种业务装置,其特征在于,包括若干业务***,所述业务***用于业务处理以及将业务参数封装成消息事件并提交到消息队列;所述装置还包括消息处理***和消息发送***,其中所述消息处理***用于从所述消息队列接收消息事件,调用与所述消息事件适配的消息处理器生成待发送消息,并生成与时间顺序相对应的数据库ID,根据所述数据库ID将所述待发送消息存入数据库;所述消息发送***用于轮询所述数据库并根据所述数据库ID顺序取出所述待发送消息,计算所述待发送消息对应的hash值,配置若干统一发送通道;所述hash值与所述统一发送通道一一对应,根据所述hash值,确定对应的统一发送通道并将待发送消息提交到统一发送通道,为每种消息定制专门的子发送通道,然后再通过统一发送通道派发至对应的一个或一个以上子通道进而根据内容格式说明和相关配置发送待发送消息。
7.如权利要求6所述的业务装置,其特征在于,所述消息处理***具有若干消息处理器,所述消息处理器根据所述业务***或消息类型定制配置;所述消息处理***接收消息事件后调用与所述消息事件适配的消息处理器生成待发送消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992053.1A CN112087373B (zh) | 2020-09-21 | 2020-09-21 | 一种消息发送方法及业务装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992053.1A CN112087373B (zh) | 2020-09-21 | 2020-09-21 | 一种消息发送方法及业务装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112087373A CN112087373A (zh) | 2020-12-15 |
CN112087373B true CN112087373B (zh) | 2022-05-13 |
Family
ID=73738531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010992053.1A Active CN112087373B (zh) | 2020-09-21 | 2020-09-21 | 一种消息发送方法及业务装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112087373B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970112A (zh) * | 2012-11-30 | 2013-03-13 | 中国电子科技集团公司第十五研究所 | 一种传输***数据的***及方法 |
WO2016097672A1 (en) * | 2014-12-18 | 2016-06-23 | Ipco 2012 Limited | A device, system, method and computer program product for processing electronic transaction requests |
CN105959151A (zh) * | 2016-06-22 | 2016-09-21 | 中国工商银行股份有限公司 | 一种高可用的流式处理***及方法 |
US9652310B1 (en) * | 2013-09-30 | 2017-05-16 | EMC IP Holding Company LLC | Method and apparatus for using consistent-hashing to ensure proper sequencing of message processing in a scale-out environment |
CN106990972A (zh) * | 2017-04-13 | 2017-07-28 | 沈阳微可信科技有限公司 | 用于运行可信用户界面的方法和装置 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
CN110865985A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN111008402A (zh) * | 2018-10-08 | 2020-04-14 | 国际商业机器公司 | 区块链时间戳协定 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040002958A1 (en) * | 2002-06-26 | 2004-01-01 | Praveen Seshadri | System and method for providing notification(s) |
US7304996B1 (en) * | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
US20140372516A1 (en) * | 2011-02-02 | 2014-12-18 | Imvu Inc. | System and method for providing a scalable translation between polling-based clients and connection-based message queues |
GB2537087A (en) * | 2014-12-18 | 2016-10-12 | Ipco 2012 Ltd | A system, method and computer program product for receiving electronic messages |
CN106210101B (zh) * | 2016-07-20 | 2019-06-18 | 上海携程商务有限公司 | 消息管理***及消息管理方法 |
CN108388479B (zh) * | 2018-02-10 | 2021-09-24 | 深圳壹账通智能科技有限公司 | 延迟消息推送方法、装置、计算机设备及存储介质 |
CN110413425B (zh) * | 2019-07-24 | 2022-01-18 | 深圳乐信软件技术有限公司 | 第三方消息回调方法、装置、服务器和存储介质 |
-
2020
- 2020-09-21 CN CN202010992053.1A patent/CN112087373B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970112A (zh) * | 2012-11-30 | 2013-03-13 | 中国电子科技集团公司第十五研究所 | 一种传输***数据的***及方法 |
US9652310B1 (en) * | 2013-09-30 | 2017-05-16 | EMC IP Holding Company LLC | Method and apparatus for using consistent-hashing to ensure proper sequencing of message processing in a scale-out environment |
WO2016097672A1 (en) * | 2014-12-18 | 2016-06-23 | Ipco 2012 Limited | A device, system, method and computer program product for processing electronic transaction requests |
CN105959151A (zh) * | 2016-06-22 | 2016-09-21 | 中国工商银行股份有限公司 | 一种高可用的流式处理***及方法 |
CN106990972A (zh) * | 2017-04-13 | 2017-07-28 | 沈阳微可信科技有限公司 | 用于运行可信用户界面的方法和装置 |
CN110865985A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN111008402A (zh) * | 2018-10-08 | 2020-04-14 | 国际商业机器公司 | 区块链时间戳协定 |
CN110636130A (zh) * | 2019-09-23 | 2019-12-31 | 上海钧正网络科技有限公司 | 延时消息处理方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
Ultralightweight RFID Reader-Tag Mutual Authentication Revisited;Yu-Chung Huang;《IEEE Xplore》;20150827;全文 * |
基于WebRTC技术的实时通信***的设计与实现;Michael Mwambia;《CNKI硕士论文全文数据库》;20171231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112087373A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8488448B2 (en) | System and method for message sequencing in a broadband gateway | |
CN111371892A (zh) | 高并发分布式消息推送***及方法 | |
US20100115041A1 (en) | Creating a message readable by a plurality of heterogeneous recipients | |
US8825797B2 (en) | Method and system for providing user service data | |
CN109739654B (zh) | 消息中间件及消息传输方法 | |
CN109271261B (zh) | 一种事件统一处理方法、设备和存储介质 | |
CN115174472B (zh) | 一种消息转发处理方法及相关装置 | |
CN105610730A (zh) | Cpu与网络设备之间的消息交互方法及*** | |
CN110138753B (zh) | 分布式消息服务***、方法、设备及计算机可读存储介质 | |
CN111104231B (zh) | 多层级环境下的消息收发方法、收发装置、服务器及*** | |
CN112087373B (zh) | 一种消息发送方法及业务装置 | |
CN116800787A (zh) | 一种基于以太网通讯协议的车载通信方法及*** | |
US9438693B2 (en) | System and method for message retry in a broadband gateway | |
CN114897532A (zh) | 操作日志处理方法、***、装置、设备和存储介质 | |
CN113660121B (zh) | 基于分布式***的信息管理方法、装置及计算机存储介质 | |
Saiedian et al. | Performance evaluation of eventing web services in real-time applications | |
CN112613298A (zh) | 数据校验方法、***、计算机程序产品和电子设备 | |
CN109582481B (zh) | 调用结果的传输方法、装置、设备及存储介质 | |
CN115955319B (zh) | 数据集生成*** | |
CN111240867A (zh) | 一种信息通讯***及方法 | |
CN112887124B (zh) | 5g基站的配置管理方法及装置 | |
CN115480929A (zh) | 一种同城多活数据中心下的消息处理方法及装置 | |
CN116244099B (zh) | 嵌入式***内进程通讯方法、装置、电子设备和存储介质 | |
CN114253747B (zh) | 一种分布式消息管理***和方法 | |
CN116366706A (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Baojun Inventor before: Li Baojun |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |