整体设计
前面我们介绍了服务端,对接收到的消息,无论是请求消息还是响应消息,我们都是将消息主题传入工厂,构建对应的处理器进行处理。
同理,对于发送的消息,我们也可以采用相同的处理模式。
这里面有个问题需要思考,发送器与消息的关系是什么?
发送器相当于业务消息的封装,消息的参数是通过发送器属性设置,还是调用发送方法时作为方法参数处理?
实际上,这两种方式都能实现我们的目的,具体分析如下:
对于发送器对应的消息主题,我们希望具体的发送器直接内置固化,不能交由外部传入,否则会造成混乱,因此使用构造参数的方法来设置。
对于消息标识,有两种场景,一是消息新创建的时候,这时候消息标识直接使用请求消息构造方法中生成的标识即可,二是消息重发,这时候,我们需要读取原有的消息标识,即重发过程中保持消息标识不变,这样服务端才能根据消息标识去重。因此消息标识这个参数可以在调用方法时传入。
对于消息内容,同样有两种情况,一种是对应业务事件,包括标识、事件,另外一种,则对应技术框架部分的操作,如登录,需要将账号和密钥构建一个json对象传入。
综上考虑,我们设置两个属性,消息主题和消息内容,其中消息主题为私有属性,仅允许通过构造函数传入,消息内容则设置了一个保护方法,允许被子类调用。
根据上述思考与设计,处理框架由几个主要的部分组成:
1.消息主题:我们根据业务需求,将事件转换为消息主题