消息以json的形式来传递。主要消息类型暂定为:
待集成模块向register里发布集成信息,管理总线订阅newTopic,如收到订阅信息则将其 放入集成队列并upload其项目文件。
- moduleName:项目名称,主键
管理总线可以向controlAdmin发布消息,所有模块得到消息后对比如果是自己的消息模块 则运行其command并把自身状态反馈。
暂定控制消息为控制模块运行状态status的值:
- moduleName:需要控制的项目
- command:需要调整的状态(0/1/2)
在模块进行command控制后反馈给管理总线自身状态,通过向feedback发布自身状态。
- moduleName:需要控制的项目
- command:模块自身状态
模块集成后每5秒向beatHeart发布自身心跳信号。管理总线维持着自身的模块管理表,若 管理表中模块对应的心跳信号连续三次未收到则断开该模块集成。
- moduleName:自身主键
因为kafka的接收数据(poll)是基于轮询的,所以规定每次轮询函数(ConsumerLoop)必须 单独创建一个线程,而发送线程只需要运行在主线程,特别的心跳信号发送是一个调度线程。
虽然可以用topic来区分消息类型,但每次consumer拉取下来的是所有订阅模块的信息。批处理 时无法判断是从哪个topic拉取下来的,所以规定发布消息record的格式为<topicName,jsonMessage>。 当然这已经在api中完成。
管理模块的集成信息和控制信息。管理总线维系着一张拥有所有已集成模块的信息表,表中内容为 模块名称作为主键。
控制模块间的信息传输。
见ZkModule的类中的功能描述。
创建管理与业务两条总线。
初步暂定neo4j为展示集成的总体体系,当topic/module生成时会产生新的节点,当pub/sub操作 时会产生相应的边。