本发明属于消息分发控制,具体涉及一种基于消息分发控制组件及算法。
背景技术:
1、目前实现消息分发控制的难点在于如何能够处理已知的所有消息类型,因为不同的消息类型处理的消息逻辑不一样,需要将已知所有的消息处理逻辑尽可能的放到一个容器中,分发消息时,可以根据消息的类型选择对应的消息处理逻辑,即使开始不能考虑全面,也需要预留可以扩展的消息处理逻辑的扩展接口。
技术实现思路
1、本发明的目的是提供一种基于消息分发控制组件及算法,它基于生产者消费者模式,能够实现任务状态维护,处理结果追踪以及任务处理方式等功能。
2、本发明的技术方案如下:一种基于消息分发控制算法,包括如下步骤:
3、步骤1:消息分发器启动;
4、步骤2:发送方发送消息;
5、步骤3:消息分发模块分发消息;
6、步骤4:消息接收,消费者接收消息,处理完成之后,返回成功消费或者消费失败。
7、所述的步骤1包括如下:
8、(1)初始化消息分发器,触发start()方法,默认开启20个线程,存放到线程池中,所有线程处于待工作状态;
9、(2)初始化阻塞队列,通过队列链接信息,链接到阻塞队列,阻塞队列实现生产者与消费者分开,生产者将消息放入阻塞队列,消费者从阻塞队列中或者消息,此时阻塞队列处于待工作状态;
10、(3)初始化消息处理器,根据预置的消息类型,分别将不同类型的消息处理器注册到消息分发器中,消息处理器包含消息的前置处理函数,后置处理函数,此时各类消息处理器处理待工作状态;
11、(4)注册消息消费者,消息接收模块将消费者的信息注册到消息分发器中并且保证各个消息消费者处于正常状态。
12、所述的步骤2包括如下:
13、(1)基于消息分发器模块的消息数据结构,构建实际消息体;
14、(2)基于restful api的规范,调用消息分发器模块的addtask()接口;
15、(3)经过校验消息结构的合法性后,消息分发器模块将消息存放到消息阻塞队列。
16、所述的步骤3包括如下:
17、(1)消息分发,从消息阻塞队列读取消息;
18、(2)根据消息的类型,选择从消息分发器中选择合适的消息处理器;
19、(3)执行消息处理器的前置处理函数;
20、(4)选择合适的消息消费方并调用消费者;
21、(5)执行消息的后置处理函数;
22、(6)根据消息消费的结果,标记当前消息是否完成消费。
23、一种基于消息分发控制算法组件,包括消息分发器模块,消息处理器模块,消息队列模块和消息发送接收模块。
24、所述的消息发送接收模块包括:消息的发送,消息的接收,将模块信息注册到消息分发器。
25、所述的消息分发器:维护消息处理器模块的注册信息,维护消息发送接收模块的注册信息,链接阻塞队列,消息分发。
26、所述的消息处理器:消息的前置处理,消息的通知,消息的后置处理。
27、本发明的有益效果在于:本发明提出了一套完整的消息分发处理流程,其中消息分发器差用阻塞队列和线程池的方式,提高了组件的吞吐量和性能。消息管理器依据不同的消息类型选择合适的消息处理器,并且预留了合适的扩展接口,如此对外不仅实现了高集成性,也体现了高可扩展性。
1.一种基于消息分发控制算法,其特征在于,包括如下步骤:
2.如权利要求1所述的一种基于消息分发控制算法,其特征在于,所述的步骤1包括如下:
3.如权利要求1所述的一种基于消息分发控制算法,其特征在于,所述的步骤2包括如下:
4.如权利要求1所述的一种基于消息分发控制算法,其特征在于,所述的步骤3包括如下:
5.一种基于消息分发控制算法组件,其特征在于:包括消息分发器模块,消息处理器模块,消息队列模块和消息发送接收模块。
6.如权利要求5所述的一种基于消息分发控制算法组件,其特征在于:所述的消息发送接收模块包括:消息的发送,消息的接收,将模块信息注册到消息分发器。
7.如权利要求5所述的一种基于消息分发控制算法组件,其特征在于:所述的消息分发器:维护消息处理器模块的注册信息,维护消息发送接收模块的注册信息,链接阻塞队列,消息分发。
8.如权利要求5所述的一种基于消息分发控制算法组件,其特征在于:所述的消息处理器:消息的前置处理,消息的通知,消息的后置处理。