# dawn-executor **Repository Path**: dawndev/dawn-executor ## Basic Information - **Project Name**: dawn-executor - **Description**: 基于订阅/发布模型的执行器框架 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dawn-executor 基于消息订阅模式的执行器框架 ### 架构说明 ![架构图](doc/executor-architectgen.png) 客户端向消息中间件投递消息,执行器接收到消息后,按Topic类型分别处理业务逻辑。 ### Executor 消息执行者 一个Executor处理一个Topic消息。业务Executor可以继承AbstractQueueExecutor类,AbstractQueueExecutor封装了单线程阻塞队列处理任务的逻辑。每次接收消息产生一个队列信息,由单线程异步轮询消费队列,保障相同类型任务不会被并发执行。用户也可以自定义Executor的处理方式,但必须实现TopicExecutor接口。 可参考样例springdata-redis-appexample的SigninExecutor。 ## Processor 处理器 Processor是Executor的实际处理单元,一个Executor可以有多个Processor,多个处理单元可以让代码隔离性更好、业务逻辑更精简。 ProcessorContext作为处理器上下文贯穿多个Processor处理过程,可以实现多个Processor间的传参。多个Processor是序列执行的,通过getOrder()方法定义执行顺序。 可参考样例springdata-redis-appexample的DemoSigninProcessor、Demo2SigninProcessor ### Subscriber 订阅者 用户通过自己使用的消息中间件,编写订阅消息的逻辑,接收到消息后,执行Topic对应Executor的execut(message)方法。 可参考Redis实现springdata-redis-pubsub的RedisSubscriber。 ## Publisher 发布者 通过通过自己使用的消息中间件,编写消息发布逻辑,实现类实现Publisher接口。 可参考Redis实现springdata-redis-pubsub的RedisPublisher。 ## springdata-redis-appexample 基于springboot框架,使用redis做消息中间件实现的样例项目。