概述
前面说完了整体处理流程,接下来的几篇,从一些专题角度做一些补充,部分地方前面提到过,但没有具体展开说,今天我们来说下消息验证。
为保证系统的稳定可靠运行,必须对输入的数据进行严格验证,防止一些非法的异常数据引发系统后续处理流程出错甚至崩溃。同时,对于验证失败的情况,需要输出明确的、友好的错误信息,以便对接方开发和调试,以及上线后运行异常排查。
验证工作主要包括以下内容:
1.验证消息对象的属性,如是否为空、格式是否正确,属于基础验证工作
2.验证消息是否曾经接收过,如是,则不进行后续处理,该点是保证幂等性,对消息进行去重的关键处理
3.验证消息主题编码,是否存在以及是否可用
4.验证应用编码,是否存在以及是否可用
5.验证权限,确保该应用由该消息主题的功能权限
6.验证时效性,约定消息收到时间不能与请求时间相差10分钟以上,否则拒绝服务
上面这6条,我们设计的时候,分成了三大类,处理方式不同。
基本验证
第1条是基本验证,请求消息和响应消息都需要,客户端和服务端也都需要,我们专门实现了一个自定义处理器,来实现代码复用的目的。
package tech.abc