本节将消息队列框架的实现作为一个项目,会给出本项目的目标,重点关注非功能质量等方面的内容。
本项目的目标是简化Kafka客户端API的使用方法,特别是对于消费端的开发,开发者只需实现MessageHandler接口或者相关子类,在实现中处理消息并完成业务逻辑,并且在主线程中启动封装的消费端服务器即可。它提供了各种常用的MessageHandler,这些MessageHandler会自动将文本消息转换成领域对象模型或者 JSON 对象等数据结构,让开发者更专注于业务处理。如果使用服务源码注解的方式声明消息处理机的后台,则可以将一个通用的服务方法直接转变成能很好地处理Kafka消息队列的处理机,使用起来极其简单,代码一目了然。
在使用方面,它提供了多种使用方式:直接使用Java API;与Spring环境无缝集成;服务源码注解,通过注解声明方式启动Kafka消息队列的处理机。
除此之外,它基于注解提供了消息处理机的模板项目,可以根据模板项目通过配置来快速开发Kafka的消息处理机。
本项目在框架级别通过不同的线程池技术来保证处理机的高性能:适合轻量级服务的同步线程模型及适合 I/O 密集型服务的异步线程模型(细分为所有消费者流共享线程池和每个流独享线程池)。另外,在异步线程模型中的线程池也支持有确定的线程数量的线程池和线程数量可自动增减的线程池。
本项目在框架级别上处理了常见的异常,将异常记入错误日志,当系统发生错误时,可用于手工恢复或者清洗数据,并实现了优雅关机和重启等功能。