由于MQ消息发送和HTTP调用无法与数据库写操作在同一事务中完成,导致一致性难以保障。若没有统一的组件支持,各业务系统需各自实现这部分逻辑,造成重复开发且难以维护。为此,开发了该技术组件,统一解决这一共性难题,提升系统的可靠性和开发效率。
功能案例
使用方通过引入本地消息组件,使用服务:
- 用户可以选择通过注解或者直接调用组件服务的方式进行使用。
- 注解方式,会自动获取入参,入参需要为 TaskMessageEntityCommand 对象,它可以是某个入参的对象。
产品概述
本地任务消息组件基于 Spring 框架能力,设计并实现了通用功能内核,便于集成到各类业务系统中。在业务系统中,组件支持在事务内完成数据写库的同时,写一条本地消息记录,写入完成后,组件同步推送 Spring 事件,触发事务外的异步处理,如发送 MQ 消息或 HTTP 调用。即使异步处理失败,组件内置的本地消息表定时任务(支持自定义配置“门牌号”多任务并行扫描,提升扫描吞吐量)会持续检测并重试通知,确保消息最终一致性和业务流程的可靠执行。
- 首先,Local Task Message 任务消息组件,是以解决通用业务场景中的,本地数据库事务和外部MQ/HTTP调用一致性问题而设计实现的。让上游业务系统不需要在每个流程中,都要做大量的重复编码。而是通过注解或者直接调用组件内核服务即可完成消息的通知操作。
- 之后,Local Task Message 任务消息组件,并不是一个单纯的工具性功能,而是剩余一个领域服务内核,它具备完整的领域功能,具备操作数据库表的能力,以及接收 Spring Event 事件,对接 MQ、HTTP 完成和外部的交互处理。
- 然后,上游系统在使用这套服务时,只需要配置好对应的本地消息表(一个事务下,连的同一个库),以及引入组件和完成yml配置,即可直接使用。