CN111400058A - 调用消息的方法、装置、计算机设备及存储介质 - Google Patents
调用消息的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111400058A CN111400058A CN202010151612.6A CN202010151612A CN111400058A CN 111400058 A CN111400058 A CN 111400058A CN 202010151612 A CN202010151612 A CN 202010151612A CN 111400058 A CN111400058 A CN 111400058A
- Authority
- CN
- China
- Prior art keywords
- annotation
- target
- message
- items
- bean
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 235000010627 Phaseolus vulgaris Nutrition 0.000 claims abstract description 54
- 244000046052 Phaseolus vulgaris Species 0.000 claims abstract description 54
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 2
- 235000014552 Cassia tora Nutrition 0.000 description 2
- 244000201986 Cassia tora Species 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007670 refining Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种调用消息的方法、装置、计算机设备及存储介质,该方法包括:扫描目标文件,并判断在所述目标文件中是否包含目标注解;在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;执行实例化后的Bean,以进行消息调用;本发明可以降低用户使用消息中间件以进行消息调用的难度。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种调用消息的方法、装置、计算机设备及存储介质。
背景技术
消息中间件利用高效可靠的消息传递机制可以进行平台无关的数据交流,消息中间件尤其适用于需要可靠的数据传送的分布式环境中;消息中间件已经逐渐成为企业IT系统内部通信的核心手段;当今市面上有很多主流的消息中间件,其中,RocketMQ是比较常用的一种;但是,在使用RocketMQ时需要使用者配置一系列的参数信息,并需要注册一个MessageListener,使用起来不是很方便,且对于使用者有一定的技术要求;如何降低使用RocketMQ的难度,成为亟需解决的技术问题。
发明内容
本发明的目的在于提供一种调用消息的方法、装置、计算机设备及存储介质,可以降低用户使用消息中间件以调用消息的难度。
根据本发明的一个方面,提供了一种调用消息的方法,具体包括以下步骤:
扫描目标文件,并判断在所述目标文件中是否包含目标注解;
在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行实例化后的Bean,以进行消息调用。
可选的,在所述扫描目标文件,并判断在所述目标文件中是否包含目标注解之前,所述方法还包括:
接收构建注解指令;其中,所述构建注解指令包括:属性值;
根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;
将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;
将所述目标注解添加到所述目标文件的预设位置处。
可选的,所述扫描目标文件,并判断在所述目标文件中是否包含目标注解,具体包括:
逐行扫描所述目标文件中的代码,并判断在所述目标文件中是否包含预设注解标识;
若是,则判定在所述目标文件中包含所述目标注解。
可选的,所述在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值,具体包括:
利用Spring的后置处理器,将所述目标注解加载到常量池里,并通过注解解析器,获取所述目标注解中的各种注解项以及各种注解项的属性值。
可选的,所述根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化,具体包括:
从所述常量池中获取预设的消息中间件的Bean框架;其中,在所述Bean框架中包括多个需要添加属性值的注解项;
将所述目标注解中的各个注解项的属性值添加到所述Bean框架的对应位置处。
可选的,所述执行实例化后的Bean,以进行消息调用,具体包括:
根据所述目标注解中的消费者集群ConsumerGroup确定出目标消费者集群,并从所述目标消费者集群中确定出一个目标消费者;
根据所述目标注解中的路由服务器地址NameserverAddress确定出目标路由服务器,并在所述目标消费者与所述目标路由服务器之间建立长链接;
根据所述目标注解中的消息主题Topic,从所述目标路由服务器中获取与所述消息主题Topic对应的Broker,并建立所述目标消费者与所述Broker之间的长链接;
所述目标消息者从所述Broker中获取与所述消息主题Topic对应的消息。
根据本发明的另一个方面,还提供了一种调用消息的装置,具体包括以下组成部分:
扫描模块,用于扫描目标文件,并判断在所述目标文件中是否包含目标注解;
解析模块,用于在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
构建模块,用于根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行模块,用于执行实例化后的Bean,以进行消息调用。
可选的,所述装置还包括:
处理模块,用于接收构建注解指令;其中,所述构建注解指令包括:属性值;根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;将所述目标注解添加到所述目标文件的预设位置处。
根据本发明的另一个方面,还提供了一种计算机设备,具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述调用消息的方法的步骤。
根据本发明的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述调用消息的方法的步骤。
本发明提供的调用消息的方法、装置、计算机设备及存储介质,利用Spring的自定义注解功能,开发出了自定义注解,在服务启动的时候,利用Spring的后置处理器,将所述自定义注解加载到维护Bean的常量池里,然后通过注解解析器,拿出所述自定义注解中的各种注解项,并根据所述各种注解项生成对应的Bean,再根据所述自定义注解中的各种注解项的注解内容实例化对应的Bean,最后执行实例化的Bean以进行消息调用;通过本发明,用户在调用消息中间件时就不再需要引入一堆配置文件,而只需要通过一个注解就可以调用消息中间件,并实现消息中间件的调用消息的功能。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为实施例一提供的调用消息的方法的一种可选的流程示意图;
图2为实施例二提供的调用消息的装置的一种可选的程序模块示意图;
图3为实施例三提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种调用消息的方法,如图1所示,该方法具体包括以下步骤:
步骤S101:扫描目标文件,并判断在所述目标文件中是否包含目标注解。具体的,步骤S101,包括:
逐行扫描所述目标文件中的代码,并判断在所述目标文件中是否包含预设注解标识;
若是,则判定在所述目标文件中包含所述目标注解。
优选的,所述预设注解标识为:@RocketListenr。
在本实施例中,通过目标注解调用消息中间件以实现消息中间件的调用消息的功能;优选的,本实施例中的消息中间件为RocketMQ。
在消息中间件RocketMQ中包括以下四个组件:Producer、Consumer、Nameserver和Broker;其中;其中,Producer为消息生产者,也称为消息发布者,用于负责生产并发送消息,每个Producer可以生产一种或多种消息主题Topic类型的消息;Consumer为消息消费者,也称为消息订阅者,用于负责接收并消费消息;Broker为消息存储模块,用于存储由Producer生产的消息,每个Broker存储一种消息主题Topic类型的消息;Nameserver为路由服务器,用于存储消息主题Topic与Broker的对应关系。
进一步的,在步骤S101之前,所述方法还包括:
步骤A1:接收构建注解指令;其中,所述构建注解指令包括:属性值;
步骤A2:根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;
步骤A3:将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;
步骤A4:将所述目标注解添加到所述目标文件的预设位置处。
其中,一个消费者集群ConsumerGroup包括多个消息消费者Consumer;每个消息消费者Consumer可以订阅一个或多个消息主题Topic;消息主题Topic为需要订阅的消息的类型;路由服务器地址NameserverAddress是Nameserver集群中的一个路由服务器NameServer的地址。
更新一步的,在所述目标注解项中还可以包括以下注解项以及对应的属性值:消息标签Tag、和/或消息消费顺序ConsumeFromWhere。
其中,消息主题Topic为一级消息类型,用于对消息进行分类;消息标签Tag为二级消息类型,用于对每个消息主题Topic下的消息进一步细化分类;消息消费顺序ConsumeFromWhere包括以下两种消息消费顺序:从队列头部消费消息、从队列尾部消费消息。
在实际应用中,用户需要在构建注解指令中至少指定消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress的属性值;可选的,用户还可以在构建注解指令中指定消息标签Tag、和/或消息消费顺序ConsumeFromWhere的属性值;若用户不在构建注解指令中指定消息标签Tag、和/或消息消费顺序ConsumeFromWhere的属性值,则消息标签Tag、和/或消息消费顺序ConsumeFromWhere使用默认属性值。
以下为构建目标注解的示例:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public@interface RocketListener{
String consumerGroup();
String topic();
String tag()default”*”;
String namesrvAddr()default””;
ConsumeFromWhere consumeFromWhere()default
CONSUME_FROM_LAST_OFFSET;
以下为构建出的目标注解的示意:
@RocketListener(consumerGroup=”testG”,topic=”testTopic”,namesrvAddr=”30.31.23.11:10911”)。
步骤S102:在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值。
具体的,步骤S102,包括:
利用Spring的后置处理器,将所述目标注解加载到常量池里,并通过注解解析器,获取所述目标注解中的各种注解项以及各种注解项的属性值。
进一步的,在所述解析出所述目标注解中的多个注解项以及每个注解项的属性值之后,所述方法还包括:
判断在所述目标注解中是否包含消息标签Tag和/或消息消费顺序ConsumeFromWhere,若否,则从配置文件中获取消息标签Tag和/或消息消费顺序ConsumeFromWhere的默认属性值。
在本实施例中,当构建所述目标注解时,需要设置消费者集群ConsumerGroup、消息主题Topic和路由服务器地址NameserverAddress的属性值;此外,可选择性的设置消息标签Tag和消息消费顺序ConsumeFromWhere的属性值;若不设置消息标签Tag的属性值,则默认需要获取消息主题Topic下的所有消息标签Tag的消息;若不设置消息消费顺序ConsumeFromWhere的属性值,则默认使用从队列尾部消费消息。
步骤S103:根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化。
其中,Bean为描述Java的软件组件模型,在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。
具体的,步骤S103,包括:
步骤B1:从所述常量池中获取预设的消息中间件的Bean框架;其中,在所述Bean框架中包括多个需要添加属性值的注解项;
步骤B2:将所述目标注解中的各个注解项的属性值添加到所述Bean框架的对应位置处。
步骤S104:执行实例化后的Bean,以进行消息调用。
具体的,步骤S104,包括:
步骤C1:根据所述目标注解中的消费者集群ConsumerGroup确定出目标消费者集群,并从所述目标消费者集群中确定出一个目标消费者;
步骤C2:根据所述目标注解中的路由服务器地址NameserverAddress确定出目标路由服务器,并在所述目标消费者与所述目标路由服务器之间建立长链接;
步骤C3:根据所述目标注解中的消息主题Topic,从所述目标路由服务器中获取与所述消息主题Topic对应的Broker,并建立所述目标消费者与所述Broker之间的长链接;
步骤C4:所述目标消息者从所述Broker中获取与所述消息主题Topic对应的消息。
在本实施例中,利用Spring的自定义注解功能,开发出了自定义注解,在服务启动的时候,利用Spring的后置处理器,将所述自定义注解加载到维护Bean的常量池里,然后通过注解解析器,拿出所述自定义注解中的各种注解项,并根据所述各种注解项生成对应的Bean,再根据所述自定义注解中的各种注解项的注解内容实例化对应的Bean,执行实例化的Bean以实现消息中间价的调用消息的功能;在本实施例中,当需要使用消息中间件RocketMQ时,不再需要配置一系列的参数信息以及注册一个MessageListener,只需要在目标文件中添加目标注解即可,通过目标注解构建对应的Bean并实例化后即可实现消息中间件RocketMQ的调用消息的功能,从而在Broker中获取对应消息主题Topic的消息。这样,用户在调用消息中间件时就不需要引入一堆配置文件,而只需要通过一个注解就可以调用消息中间件,降低了使用消息中间件RocketMQ的难度。
具体的,通过Spring整合RocketMQ,并通过注解@RocketListener标识目标文件中的方法的形式,将指定方法标识为一个RocketMQ的消费者Consumer,框架启动时将此方法封装为一个MessageListener,配合注解中的属性值生成一个Consumer。首先,检测是否包含@RocketListener标识的方法,若是,则注册一个DefaultMQPushConsumer类型的BeanDefinition,并从目标注解中获取各个注解项的属性值,并将获取到的属性值添加到BeanDefinition中以备后续实例化Bean时使用;之后,再将BeanDefinition中的属性值添加到DefaultMQPushConsumer的Bean中;最后,实例化Bean以形成消息消费者;该Bean会在Spring容器启动完成后启动消息消费者开始消费,同时在Spring关闭时终止消息消费者。
实施例二
本发明实施例提供了一种调用消息的装置,如图2所示,该装置具体包括以下组成部分:
扫描模块201,用于扫描目标文件,并判断在所述目标文件中是否包含目标注解;
解析模块202,用于在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
构建模块203,用于根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行模块204,用于执行实例化后的Bean,以进行消息调用。
具体的,所述装置还包括:
处理模块,用于接收构建注解指令;其中,所述构建注解指令包括:属性值;根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;将所述目标注解添加到所述目标文件的预设位置处。
其中,一个消费者集群ConsumerGroup包括多个消息消费者Consumer;每个消息消费者Consumer可以订阅一个或多个消息主题Topic;消息主题Topic为需要订阅的消息的类型;路由服务器地址NameserverAddress是Nameserver集群中的一个路由服务器NameServer的地址。
此外,在所述目标注解项中还可以包括以下注解项以及对应的属性值:消息标签Tag、和/或消息消费顺序ConsumeFromWhere。
其中,消息主题Topic为一级消息类型,用于对消息进行分类;消息标签Tag为二级消息类型,用于对每个消息主题Topic下的消息进一步细化分类;消息消费顺序ConsumeFromWhere包括以下两种消息消费顺序:从队列头部消费消息、从队列尾部消费消息。
在实际应用中,用户需要在构建注解指令中至少指定消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress的属性值;可选的,用户还可以在构建注解指令中指定消息标签Tag、和/或消息消费顺序ConsumeFromWhere的属性值;若用户不在构建注解指令中指定消息标签Tag、和/或消息消费顺序ConsumeFromWhere的属性值,则消息标签Tag、和/或消息消费顺序ConsumeFromWhere使用默认属性值。
进一步的,扫描模块201,具体用于:
逐行扫描所述目标文件中的代码,并判断在所述目标文件中是否包含预设注解标识;若是,则判定在所述目标文件中包含所述目标注解。
进一步的,解析模块202,具体用于:
利用Spring的后置处理器,将所述目标注解加载到常量池里,并通过注解解析器,获取所述目标注解中的各种注解项以及各种注解项的属性值。
此外,所述装置还包括:
判断模块,用于判断在所述目标注解中是否包含消息标签Tag和/或消息消费顺序ConsumeFromWhere,若否,则从配置文件中获取消息标签Tag和/或消息消费顺序ConsumeFromWhere的默认属性值。
进一步的,构建模块203,具体用于:
从所述常量池中获取预设的消息中间件的Bean框架;其中,在所述Bean框架中包括多个需要添加属性值的注解项;将所述目标注解中的各个注解项的属性值添加到所述Bean框架的对应位置处。
更进一步的,执行模块204,具体用于:
根据所述目标注解中的消费者集群ConsumerGroup确定出目标消费者集群,并从所述目标消费者集群中确定出一个目标消费者;根据所述目标注解中的路由服务器地址NameserverAddress确定出目标路由服务器,并在所述目标消费者与所述目标路由服务器之间建立长链接;根据所述目标注解中的消息主题Topic,从所述目标路由服务器中获取与所述消息主题Topic对应的Broker,并建立所述目标消费者与所述Broker之间的长链接;所述目标消息者从所述Broker中获取与所述消息主题Topic对应的消息。
在本实施例中,利用Spring的自定义注解功能,开发出了自定义注解,在服务启动的时候,利用Spring的后置处理器,将所述自定义注解加载到维护Bean的常量池里,然后通过注解解析器,拿出所述自定义注解中的各种注解项,并根据所述各种注解项生成对应的Bean,再根据所述自定义注解中的各种注解项的注解内容实例化对应的Bean,这样,用户在调用消息中间件时就不需要引入一堆配置文件,而只需要通过一个注解就可以调用消息中间件。
实施例三
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,本实施例的计算机设备30至少包括但不限于:可通过系统总线相互通信连接的存储器301、处理器302。需要指出的是,图3仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作系统和各类应用软件,例如实施例二的调用消息的装置的程序代码等。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器302在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。
具体的,在本实施例中,处理器302用于执行处理器302中存储的调用消息的方法的程序,所述调用消息的方法的程序被执行时实现如下步骤:
扫描目标文件,并判断在所述目标文件中是否包含目标注解;
在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行实例化后的Bean,以进行消息调用。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
扫描目标文件,并判断在所述目标文件中是否包含目标注解;
在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行实例化后的Bean,以进行消息调用。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种调用消息的方法,其特征在于,所述方法包括:
扫描目标文件,并判断在所述目标文件中是否包含目标注解;
在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行实例化后的Bean,以进行消息调用。
2.根据权利要求1所述的调用消息的方法,其特征在于,在所述扫描目标文件,并判断在所述目标文件中是否包含目标注解之前,所述方法还包括:
接收构建注解指令;其中,所述构建注解指令包括:属性值;
根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;
将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;
将所述目标注解添加到所述目标文件的预设位置处。
3.根据权利要求1所述的调用消息的方法,其特征在于,所述扫描目标文件,并判断在所述目标文件中是否包含目标注解,具体包括:
逐行扫描所述目标文件中的代码,并判断在所述目标文件中是否包含预设注解标识;
若是,则判定在所述目标文件中包含所述目标注解。
4.根据权利要求1所述的调用消息的方法,其特征在于,所述在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值,具体包括:
利用Spring的后置处理器,将所述目标注解加载到常量池里,并通过注解解析器,获取所述目标注解中的各种注解项以及各种注解项的属性值。
5.根据权利要求1所述的调用消息的方法,其特征在于,所述根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化,具体包括:
从所述常量池中获取预设的消息中间件的Bean框架;其中,在所述Bean框架中包括多个需要添加属性值的注解项;
将所述目标注解中的各个注解项的属性值添加到所述Bean框架的对应位置处。
6.根据权利要求2所述的调用消息的方法,其特征在于,所述执行实例化后的Bean,以进行消息调用,具体包括:
根据所述目标注解中的消费者集群ConsumerGroup确定出目标消费者集群,并从所述目标消费者集群中确定出一个目标消费者;
根据所述目标注解中的路由服务器地址NameserverAddress确定出目标路由服务器,并在所述目标消费者与所述目标路由服务器之间建立长链接;
根据所述目标注解中的消息主题Topic,从所述目标路由服务器中获取与所述消息主题Topic对应的Broker,并建立所述目标消费者与所述Broker之间的长链接;
所述目标消息者从所述Broker中获取与所述消息主题Topic对应的消息。
7.一种调用消息的装置,其特征在于,所述装置包括:
扫描模块,用于扫描目标文件,并判断在所述目标文件中是否包含目标注解;
解析模块,用于在包含所述目标注解的情况下,解析出所述目标注解中的多个注解项以及每个注解项的属性值;
构建模块,用于根据所述目标注解中的多个注解项在常量池里构建Bean,并根据所述目标注解中的每个注解项的属性值对构建的Bean进行实例化;
执行模块,用于执行实例化后的Bean,以进行消息调用。
8.根据权利要求7所述的调用消息的装置,其特征在于,所述装置还包括:
处理模块,用于接收构建注解指令;其中,所述构建注解指令包括:属性值;根据所述构建注解指令构建出至少包含以下注解项的目标注解:消费者集群ConsumerGroup、消息主题Topic、和路由服务器地址NameserverAddress;将所述构建注解指令中的属性值添加到所述目标注解中的对应注解项中;将所述目标注解添加到所述目标文件的预设位置处。
9.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010151612.6A CN111400058B (zh) | 2020-03-06 | 2020-03-06 | 调用消息的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010151612.6A CN111400058B (zh) | 2020-03-06 | 2020-03-06 | 调用消息的方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400058A true CN111400058A (zh) | 2020-07-10 |
CN111400058B CN111400058B (zh) | 2024-06-04 |
Family
ID=71434103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010151612.6A Active CN111400058B (zh) | 2020-03-06 | 2020-03-06 | 调用消息的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400058B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360301A (zh) * | 2021-07-02 | 2021-09-07 | 北京奇艺世纪科技有限公司 | 一种消息传输系统及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040111701A1 (en) * | 2002-12-05 | 2004-06-10 | Cedric Beust | System and method for generating Enterprise Java Bean code |
CN1552029A (zh) * | 2001-07-02 | 2004-12-01 | Bea系统公司 | 用于异步Web服务的Web服务开发平台 |
US20130326085A1 (en) * | 2012-05-29 | 2013-12-05 | Alcatel-Lucent Canada Inc. | Custom diameter attribute implementers |
CN107463380A (zh) * | 2017-08-01 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 消息处理方法、装置及电子设备 |
CN108182120A (zh) * | 2017-12-08 | 2018-06-19 | 广州视源电子科技股份有限公司 | 接口调用方法和系统、存储介质和计算机设备 |
CN108737474A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Http接口调用的方法、装置 |
CN108874464A (zh) * | 2018-05-31 | 2018-11-23 | 康键信息技术(深圳)有限公司 | 中间件自动扫描装配方法、装置及存储介质 |
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN110457013A (zh) * | 2019-07-12 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 程序组件配置装置及方法 |
-
2020
- 2020-03-06 CN CN202010151612.6A patent/CN111400058B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552029A (zh) * | 2001-07-02 | 2004-12-01 | Bea系统公司 | 用于异步Web服务的Web服务开发平台 |
US20040111701A1 (en) * | 2002-12-05 | 2004-06-10 | Cedric Beust | System and method for generating Enterprise Java Bean code |
US20130326085A1 (en) * | 2012-05-29 | 2013-12-05 | Alcatel-Lucent Canada Inc. | Custom diameter attribute implementers |
CN108737474A (zh) * | 2017-04-21 | 2018-11-02 | 北京京东尚科信息技术有限公司 | Http接口调用的方法、装置 |
CN107463380A (zh) * | 2017-08-01 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 消息处理方法、装置及电子设备 |
CN108182120A (zh) * | 2017-12-08 | 2018-06-19 | 广州视源电子科技股份有限公司 | 接口调用方法和系统、存储介质和计算机设备 |
CN108874464A (zh) * | 2018-05-31 | 2018-11-23 | 康键信息技术(深圳)有限公司 | 中间件自动扫描装配方法、装置及存储介质 |
CN110032459A (zh) * | 2019-04-22 | 2019-07-19 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN110457013A (zh) * | 2019-07-12 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 程序组件配置装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360301A (zh) * | 2021-07-02 | 2021-09-07 | 北京奇艺世纪科技有限公司 | 一种消息传输系统及方法 |
CN113360301B (zh) * | 2021-07-02 | 2023-09-05 | 北京奇艺世纪科技有限公司 | 一种消息传输系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111400058B (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8271609B2 (en) | Dynamic service invocation and service adaptation in BPEL SOA process | |
US8881179B2 (en) | Cross-platform application programming interfaces for applications | |
KR20050076750A (ko) | 인터-포지션된 메시지 변경을 사용하는, 코드에 대한 수신메시지의 적응성 디스패치 | |
US8965890B2 (en) | Context sensitive media and information | |
MX2008012378A (es) | Estructura de agregacion de mensaje basado en politica. | |
US6766350B1 (en) | Shared management of data objects in a communication network | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN113419729B (zh) | 基于组件化的前端页面搭建方法、装置、设备及存储介质 | |
JP2006048645A (ja) | ドキュメントにコンテキスト情報を埋め込むための方法およびシステム | |
US20060095285A1 (en) | Manipulation of information embedded in content | |
US8495664B2 (en) | System, method and program product for invoking a remote method | |
CN106326129A (zh) | 一种程序异常信息生成方法及装置 | |
CN111400058B (zh) | 调用消息的方法、装置、计算机设备及存储介质 | |
CN116466953B (zh) | 组件化的前端开发方法、装置、计算机设备和存储介质 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN112650600B (zh) | 推送消息内容的方法、装置和计算机设备 | |
CN111610908B (zh) | 一种生成框架图的方法、计算机设备及可读存储介质 | |
CN115185576A (zh) | 一种基于流程类应用系统的流程定制方法及系统 | |
CN108984318B (zh) | 基于驱动模型的消息投递方法、装置及可读存储介质 | |
CN101185062B (zh) | 用于数据语言中变量的自动更新的方法和装置 | |
CN113626001A (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN112667441A (zh) | 基于容错功能的业务模块调度方法、系统及存储介质 | |
CN109426497B (zh) | 数据嵌入方法、装置、系统以及存储介质 | |
CN114679491A (zh) | 微前端服务应用方法、装置、存储介质及电子设备 | |
CN112104544A (zh) | 一种基于FreeMarker发送动态邮件的方法及装置 |
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 |