CN115237722A - 一种异步消息的监听方法、装置、存储介质及电子设备 - Google Patents
一种异步消息的监听方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115237722A CN115237722A CN202210916865.7A CN202210916865A CN115237722A CN 115237722 A CN115237722 A CN 115237722A CN 202210916865 A CN202210916865 A CN 202210916865A CN 115237722 A CN115237722 A CN 115237722A
- Authority
- CN
- China
- Prior art keywords
- listener
- consumer
- message
- container
- endpoint
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种异步消息的监听方法、装置、存储介质及电子设备,涉及分布式***技术领域与金融技术领域。其中,该方法包括,在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。利用该方法,能够动态创建***,实现难度低,具有较高的实用性。
Description
技术领域
本申请涉及分布式***技术领域,尤其涉及一种异步消息的监听方法、装置、存储介质及电子设备。
背景技术
在分布式***中,消息队列都是一个至关重要的组件,其提供了异步处理机制。随着异步消息应用场景愈加广泛,异步消息发送数据可靠性显得尤为重要。
通过对异步消息进行监听,能够及时确定消息队列中是否新增了异步消息,目前利用spring-kafka项目可实现创建***,一般是通过注解的方式进行创建。
但对于核心***与众多的外部***交互的场景,其中很多消息通过消息中间件通讯,使用异步消息的场景不同,要求也不尽相同,有些应用程序需监听多个队列,有些队列由多个应用程序监听,因此对异步消息的灵活监听显得尤为重要,也即需要动态创建***。
发明内容
为了解决现有技术存在的上述技术问题,本申请提供了一种异步消息的监听方法、装置、存储介质及电子设备,能够动态创建***,实现难度低,具有较高的实用性。
第一方面,本申请提供了一种异步消息的监听方法,该方法包括:在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
利用本申请提供的方法,通过***使能参数确定是否开启监听,若开启监听,则读取应用程序的YAML文件中的配置参数动态创建监听者,使用简单方便,复用性强。
在一种可能的实现方式中,读取所述应用程序的YAML文件中的配置信息以创建***,具体包括:
根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;
将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;
并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
在一种可能的实现方式中,读取所述应用程序的YAML文件中的配置信息以创建***,具体包括:
根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;
将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;
并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
在一种可能的实现方式中,所述方法还包括:
所述消息***容器采用与所述消费者不同的线程执行所述消费者对应的消息处理方法。
在一种可能的实现方式中,所述根据所述应用程序的***使能参数确定是否创建消费者前,所述方法还包括:
利用***注册器实现智能初始化单例Smart Initializing Singleton接口。
第二方面,本申请还提供了一种异步消息的监听装置,该装置包括:确定单元和创建单元。其中,所述确定单元,用于在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;所述创建单元,用于当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
利用本申请提供的装置,通过***使能参数确定是否开启监听,若开启监听,则读取应用程序的YAML文件中的配置参数动态创建监听者,使用简单方便,复用性强。
在一种可能的实现方式中,所述创建单元,具体包括:第一创建子单元、注册子单元和第二创建子单元。所述第一创建子单元,用于根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;所述注册子单元,用于将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;所述第二创建子单元,用于使并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
在一种可能的实现方式中,所述注册子单元,具体用于初始化***端点注册器,以将所述***端点和所述***容器并发工厂注册到所述***端点注册表中。
第三方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以上实现方式中的异步消息的监听方法。
第四方面,本申请还提供了一种电子设备,电子设备用于运行程序,其中,所述程序运行时执行以上实现方式中的异步消息的监听方法。
附图说明
图1为本申请实施例提供的一种异步消息的监听方法的流程图;
图2为本申请实施例提供的另一种异步消息的监听方法的流程图;
图3为本申请实施例提供的实现图2所示监听方案的架构图;
图4为本申请实施例提供的配置参数的示意图;
图5为本申请实施例提供的模块架构图;
图6为本申请实施例提供的一种异步消息的监听装置的示意图;
图7为本申请实施例提供的另一种异步消息的监听装置的示意图。
具体实施方式
为了使本技术领域的人员更清楚地理解本申请方案,下面首先说明本申请技术方案涉及的专业术语。
为了使本技术领域的人员更清楚地理解本申请方案,下面首先说明本申请技术方案涉及的专业术语。
Kafka消息***:由Scala编程语言和Java编程语言编写的一种高吞吐量的分布式发布订阅消息***。
消息队列:是在消息的传输过程中保存消息的容器。
消息中间件:也即面向消息的中间件是支持在分布式***之间发送和接收消息的软件或硬件基础结构。
异步消息:当使用异步消息传送时,发送者在发送消息以后无需等待接收程序的执行和返回结果,而是可以继续处理其他请求。
主题(topic):topic是消息发布(Pub)者和订阅(Sub)者之间的传输中介。设备可通过Topic实现消息的发送和接收,从而实现服务端与设备端的通信。一个Topic对应一个消息队列。Kafka支持多生产者,多消费者。Kafka在概念上将一个Topic分成了多个分区(Partition),写入topic的消息会被(平均)分配到其中一个Partition。Partition中会为消息保存一个Partition内唯一的ID,一般称为偏移量(offset)。这样当性能/存储不足时Kafka就可以通过增加Partition实现横向扩展。
***(Listener)是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象。当被监听对象发生上述事件或状态改变后,***某个方法将立即被执行。
端点(Endpoints):实现逻辑服务的网络节点。
通过对异步消息进行监听,能够及时确定消息队列中是否新增了异步消息,目前利用spring-kafka可实现创建***,但其需要通过使用基于“@KafkaListener”的注解的方式创建。
但对于核心***与众多的外部***交互的场景,其中很多消息通过消息中间件通讯,如牌价接收,头寸报送等。使用异步消息的场景不同,要求也不尽相同,有些应用需监听多个队列,有些队列有多个应用监听,因此对异步消息的灵活监听显得尤为重要,也即需求动态的创建***。
为了解决以上问题,本申请实施例提供了一种异步消息的监听方法、装置、存储介质及电子设备,能够根据动态的配置参数来创建***,实现难度低,具有较高的实用性。
为了使本技术领域的人员更清楚地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。`
本申请说明中的“第一”、“第二”等用词仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量
本申请实施例提供了一种异步消息的监听方法,下面结合附图具体说明。
参见图1,该图为本申请实施例提供的一种异步消息的监听方法的流程图。
该方法包括以下步骤:
S101:在应用程序启动时,根据应用程序的***使能参数确定是否创建消费者。
消费者用于消息***中轮询获取消息并进行处理,也即不同的消费者对应不同的消息处理方法。
S102:当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者。
配置信息包括主题topic和消费者组的标识号,***消费者为持有消费者实例,消费者实例为一个消费者。
消息模型一般包括队列模型(queuing)和发布-订阅模型(publish-subscribe)。
其中,队列模型的处理方式是一组消费者从服务器读取消息,一条消息只由其中的一个消费者来处理。
发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。
Kafka为这两种模型提供了单一的消费者抽象模型:消费者组(consumer group)
消费者用一个消费者组名标记自己。一个发布在topic上消息被分发给此消费者组中的一个消费者。假如所有的消费者都在一个组中,那么这就变成了队列模型。假如所有的消费者都在不同的组中,那么就完全变成了发布-订阅模型。一个消费者组中消费者订阅同一个topic,每个消费者接受topic的一部分分区的消息,从而实现对消费者的横向扩展,对消息进行分流。
当单个消费者无法跟上数据生成的速度,就可以增加更多的消费者分担负载,每个消费者只处理部分分区(partition)的消息,从而实现单个应用程序的横向伸缩。此外,Kafka还允许多个应用程序从同一个Topic读取所有的消息,此时只要保证每个应用程序有自己的消费者组即可。
消费者组的概念就是:当有多个应用程序都需要从Kafka获取消息时,让每个app对应一个消费者组,从而使每个应用程序都能获取一个或多个Topic的全部消息;在每个消费者组中,往消费者组中添加消费者来伸缩读取能力和处理能力,消费者组中的每个消费者只处理每个Topic的一部分的消息,每个消费者对应一个线程。
下面具体说明本申请方案的实现方式。
一并参见图2和图3。其中,图2为本申请实施例提供的另一种异步消息的监听方法的流程图;图3为本申请实施例提供的实现图2所示监听方案的架构图;
监听工程的实现包括以下步骤:
S201:***注册器实现智能初始化单例接口。
Kafka的***注册器(Listener Registrar)实现了智能初始化单例(SmartInitializing Singleton)接口。Smart Initializing Singleton中只有一个接口afterSingletonsInstantiated(),其作用是是在spring容器管理的所有单例对象初始化完成之后调用的回调接口。
其中,单例模式,也叫单子模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个***只需要拥有一个的全局对象,有利于协调***整体的行为。如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。
S202:***注册器根据***使能参数确定需要创建消费者。
参见图4,该图为本申请实施例提供的配置参数的示意图。
在YAML文件中配置参数以创建监听者消费异步消息。
以***使能参数为kafkalistener.enabled为例,根据该使能参数的参数值确定是否创建消费者,若enabled应用配置为true,则读取YAML文件中topic、group Id等创建监听者。其中,group Id也即消费者组的标识号。
YAML(YAML Ain't Markup Language)是一个可读性高,用来表达数据序列化的格式。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。
S203:为每一个消费者创建对应的***端点和***容器并发工厂,并通过初始化***端点注册器注册到***端点注册表中。
如果需要创建消费者,则为每一个消费者创建一个Kafka***端点(ListenerEndpoint)和Kafka并发***容器工厂(Concurrent Listener Container Factory)。
通过初始化辅助类Kafka***端点注册器(Listener Endpoint Registrar)注册到Kafka***端点注册表(Listener Endpoint Registry)中。
并发***容器工厂(Concurrent Listener Container Factory)用于实现工厂方法模式(Factory method pattern)。是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。
S204:***端点注册表管理注册的消费者的生命周期,并为每个***端点创建一个并发消息监听容器。
Kafka***端点注册表(Kafka Listener Endpoint Registry)负责管理注册的消费者的生命周期,为每个Kafka***端点(Kafka Listener Endpoint)创建一个对应的Kafka并发消息监听容器(Concurrent Message Listener Container)。
Kafka并发消息监听容器中可以指定消费的topic、消息***(MessageListener)等。
S205:并发消息监听容器根据并发数创建消息***容器,每个消息***容器有一个***消费者。
并发消息监听容器(Concurrent Message Listener Container)根据并发数创建Kafka消息***容器(Message Listener Container),每个消息***容器有一个***消费者(Listener Consumer)。
S206:***消费者从Kafka消息***中拉取消息,所述***消费者对应一个消费者示例,每个消费者实例为一个消费者。
***消费者(Listener Consumer)负责从Kafka消息***拉取消息,***消费者持有一个消费者实例,该消费者实例为Kafka驱动提供的消费者客户端入口,每个消费者实例即一个消费者,消费者是线程不安全的,因此Kafka消息***容器中有单独的线程用来执行消费者对应的消息处理方法。也即在消息***容器采用与所述消费者不同的线程执行所述消费者对应的消息处理方法。
S207:消费者每获取一条消息,对获取的消息进行处理。
消费者负责从kafka消息***中采用轮询(poll)的方式进行消息处理,每获取一条消息,调用Kafka的进程(Process)的方法,对消息进行处理。
在一些实施例中,Kafka的进程的可以参见图5所示的模块架构图,KafkaProcess位于listener目录下。该Kafka进程的方法可以调用监听工程中的消息服务以处理消息。
消费者对获取的消息进行处理,也即实现了对异步消息的监听。
以上步骤的划分仅是为了方便说明,并不构成对于本申请技术方案的限定,实际应用中,可以进行适当的调整,例如合并其中的一些步骤,本申请实施例在此不再赘述。
综上所述,利用本申请提供的方法,通过***使能参数确定是否开启监听,若开启监听,则读取应用程序的YAML文件中的配置参数动态创建监听者,使用简单方便,复用性强。
基于以上实施例提供的异步消息的监听方法,本申请实施例还提供了一种异步消息的监听装置,下面结合附图具体说明。
参见图6,该图为本申请实施例提供的一种异步消息的监听装置的示意图。
该装置包括:确定单元61和创建单元62。
其中,所述确定单元61,用于在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;
所述创建单元62,用于当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
在一些实施例中,创建单元62还用于利用***注册器实现智能初始化单例Smart Initializing Singleton接口。
利用该装置,通过***使能参数确定是否开启监听,若开启监听,则读取应用程序的YAML文件中的配置参数动态创建监听者,使用简单方便,复用性强。
下面结合具体的实现方式进行说明。
参见图7,该图为本申请实施例提供的另一种异步消息的监听装置的示意图。
图示创建单元62具体包括第一创建子单元621、注册子单元622和第二创建子单元623。
其中,所述第一创建子单元621,用于根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂。
所述注册子单元622,用于将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器。
所述第二创建子单元623,用于使并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
在一种可能的实现方式中,消息***容器采用与所述消费者不同的线程执行所述消费者对应的消息处理方法。
所述装置包括处理器和存储器,上述确定单元61和创建单元62等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现以上的异步消息的监听方法。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述的异步消息的监听方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述的异步消息的监听方法。
本发明实施例提供了一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线。
其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的异步消息的监听方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;
当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
可选的,读取所述应用程序的YAML文件中的配置信息以创建***,具体包括:
根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;
将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;
并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
可选的,,所述将所述***端点和所述***容器并发工厂注册到***端点注册表中,具体包括:
初始化***端点注册器,以将所述***端点和所述***容器并发工厂注册到所述***端点注册表中。
可选的,所述方法还包括:
使所述消息***容器采用与所述消费者不同的线程执行所述消费者对应的消息处理方法。
可选的,所述根据所述应用程序的***使能参数确定是否创建消费者前,所述方法还包括:
利用***注册器实现智能初始化单例Smart Initializing Singleton接口。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的单元或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,本申请提供的异步消息发送的处理方法、装置、存储介质及电子设备可用于人工智能领域、区块链领域、分布式领域、云计算领域、大数据领域、物联网领域、移动互联领域、网络安全领域、芯片领域、虚拟现实领域、增强现实领域、全息技术领域、量子计算领域、量子通信领域、量子测量领域、数字孪生领域或金融领域。上述仅为示例,并不对本申请的应用领域进行限定。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种异步消息的监听方法,其特征在于,所述方法包括:
在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;
当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
2.根据权利要求1所述的异步消息的监听方法,其特征在于,读取所述应用程序的YAML文件中的配置信息以创建***,具体包括:
根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;
将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;
并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
3.根据权利要求2所述的异步消息的监听方法,其特征在于,所述将所述***端点和所述***容器并发工厂注册到***端点注册表中,具体包括:
初始化***端点注册器,以将所述***端点和所述***容器并发工厂注册到所述***端点注册表中。
4.根据权利要求2所述的异步消息的监听方法,其特征在于,所述方法还包括:
使所述消息***容器采用与所述消费者不同的线程执行所述消费者对应的消息处理方法。
5.根据权利要求1所述的异步消息的监听方法,其特征在于,所述根据所述应用程序的***使能参数确定是否创建消费者前,所述方法还包括:
利用***注册器实现智能初始化单例Smart Initializing Singleton接口。
6.一种异步消息的监听装置,其特征在于,所述装置包括:确定单元和创建单元;
所述确定单元,用于在应用程序启动时,根据所述应用程序的***使能参数确定是否创建消费者,所述消费者用于消息***中轮询获取消息并进行处理;
所述创建单元,用于当根据所述***使能参数确定需要创建消费者时,读取所述应用程序的YAML文件中的配置信息以创建***消费者,所述配置信息包括主题topic和消费者组的标识号,所述***消费者为持有消费者实例,所述消费者实例为一个所述消费者。
7.根据权利要求6所述的异步消息的监听装置,其特征在于,所述创建单元,具体包括:第一创建子单元、注册子单元和第二创建子单元;
所述第一创建子单元,用于根据所述配置信息,为每个所述消费者创建的***端点和***容器并发工厂;
所述注册子单元,用于将所述***端点和所述***容器并发工厂注册到***端点注册表中,所述***端点注册表用于管理所述消费者的生命周期,并为每个所述***端点创建对应的并发消息监听容器;
所述第二创建子单元,用于使并发消息监听容器根据并发数创建消息***容器,每个所述消息***容器包括一个***消费者,所述***消费者用于从消息***中拉取消息。
8.根据权利要求7所述的异步消息的监听装置,其特征在于,所述注册子单元,具体用于初始化***端点注册器,以将所述***端点和所述***容器并发工厂注册到所述***端点注册表中。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-5中任意一项所述的异步消息的监听方法。
10.一种电子设备,其特征在于,所述电子设备用于运行程序,其中,所述程序运行时执行权利要求1-5中所述的异步消息的监听方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210916865.7A CN115237722A (zh) | 2022-08-01 | 2022-08-01 | 一种异步消息的监听方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210916865.7A CN115237722A (zh) | 2022-08-01 | 2022-08-01 | 一种异步消息的监听方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237722A true CN115237722A (zh) | 2022-10-25 |
Family
ID=83676533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210916865.7A Pending CN115237722A (zh) | 2022-08-01 | 2022-08-01 | 一种异步消息的监听方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237722A (zh) |
-
2022
- 2022-08-01 CN CN202210916865.7A patent/CN115237722A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200379812A1 (en) | Unified container orchestration controller | |
CN109002362B (zh) | 一种服务方法、装置、***以及电子设备 | |
US9264518B2 (en) | Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange | |
CN110944018A (zh) | 一种基于注解和动态代理的rpc通信方法及设备、介质 | |
CN110769018A (zh) | 一种消息推送方法及装置 | |
CN113495797B (zh) | 一种消息队列及消费者动态创建方法及*** | |
CN107133160B (zh) | 服务器和客户端 | |
CN114860473A (zh) | 一种消息处理方法、处理器和存储介质 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN114064328A (zh) | 一种消息队列集群迁移方法及装置 | |
CN113556389A (zh) | 一种rpc式的云边端通信方法、***及存储介质 | |
CN113037834A (zh) | 基于分布式即时推送的Web页面状态更新方法及装置 | |
CN112738181A (zh) | 集群外部ip接入的方法、装置及服务器 | |
CN112579212A (zh) | 跨语言调用的方法、调用方装置及被调用方装置 | |
CN115237722A (zh) | 一种异步消息的监听方法、装置、存储介质及电子设备 | |
CN116303309A (zh) | 文件挂载方法、装置和电子设备 | |
CN110673827A (zh) | 基于安卓***的资源调用方法及装置、电子设备 | |
CN110262912B (zh) | 一种过程调用gRPC的调用方法及装置 | |
CN115374086A (zh) | 一种基于消息队列的数据迁移方法、装置、设备及介质 | |
CN114329183A (zh) | 对外推送数据的方法及装置、电子设备、存储介质 | |
CN111435320B (zh) | 一种数据处理方法及其装置 | |
CN112486478B (zh) | 一种基于领域驱动的事件处理方法及设备 | |
CN108920277B (zh) | 业务执行***、方法及装置、业务隔离*** | |
CN110955599A (zh) | 对象创建方法、装置、电子设备及计算机可读存储介质 | |
CN112041817A (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 |