2.2 KiB
2.2 KiB
使用场景
凡是异步且对延迟时间不敏感的任务一律使用工单。
使用方法
请先在编写代码的模块,检查是否存在WorkSheetHandler.java或者SimpleWorkSheet.java类,若存在则使用工单,不存在则不使用。通过WorkSheetHandler.java中的putObjectParam或者putStringParam方法创建一条异步执行的任务。创建一个SpringBean实现SimpleWorkSheet.java接口。实现getWorkCode()方法时,按照业务属性去定义一个字符串,例如:"ORDER_CREATE"。在execute方法处理业务逻辑。
案例
项目中"mis-modules/mis-paw/src/main/java/com/lcfc/mispaw/mq/base/IMessageQueueConsumer.java"在"onMessage"方法捕获异常,调用"mis-modules/mis-paw/src/main/java/com/lcfc/mispaw/worksheet/WorkSheetHandler.java"的"putObjectParam"方法把异步任务保存到数据库。
工单的表结构
CREATE TABLE `work_sheet` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
`system_code` VARCHAR(64) NOT NULL COMMENT '系统编码',
`work_code` VARCHAR(512) NOT NULL COMMENT '工单编码',
`current_try_times` INT NOT NULL COMMENT '当前是第几次重试',
`max_try_times` INT NOT NULL COMMENT '最多重试多少次',
`task_id` VARCHAR(512) NOT NULL COMMENT '追踪标识(traceId、业务标识、时间戳等)',
`state` VARCHAR(32) NOT NULL COMMENT '状态:wait-待执行,error-失败,success-成功',
`json_param` JSON NULL COMMENT '请求参数(JSON格式)',
`str_param` VARCHAR(512) NULL COMMENT '请求参数(简单字符串)',
`response_param` LONGTEXT NULL COMMENT '响应参数',
`error` LONGTEXT NULL COMMENT '错误信息',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`start_time` DATETIME NULL COMMENT '执行开始时间',
`finish_time` DATETIME NULL COMMENT '执行结束时间',
PRIMARY KEY (`id`),
KEY idx_task_id(`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';