hc-sort-archive-adapter
v0.1.8
Published
A sorting archive adapter for HC Sort System.
Downloads
57
Readme
hc-sort-archive-adapter
功能特性
- 定时归档: 根据提供的调度规则自动调度和执行数据归档任务。
- 错误处理: 提供全面的错误处理,以管理异常并提供错误事件的回调。
- 动态重新调度: 允许使用新的时间规则重新调度归档任务。
- 日志记录: 为归档过程的每个步骤集成了日志记录,帮助调试和监控。
安装
确保已安装 Node.js,然后向您的项目中添加 node-schedule
包:
npm install hc-sort-archive-adapter
使用方法
引入模块
const hcSortAdapter = require('hc-sort-archive-adapter');
const { RegularArchive } = hcSortAdapter;
or
import { RegularArchive } from 'hc-sort-archive-adapter';
初始化
通过传递一个包含必要配置的对象来实例化 RegularArchive
类:
const archiveInstance = new RegularArchive({
modelRef: {
collectionName: 'yourCollectionName',
archiveModel: YourArchiveModel,
find: findFunction,
removeMany: removeManyFunction,
createMany: createManyFunction
},
db: yourDbInstance,
config: yourConfigObject,
logger: yourLoggerInstance,
archiveScheduleRule: {
second: 0,
minute: 0,
hour: 1
},
archiveOptions: {
query: {},
extraQueryParams: {}
},
errorCallback: (error, context) => {
console.error('归档过程中出错:', error);
}
});
方法
init()
初始化并启动基于提供的调度计划的归档作业。
bindEvents()
为计划的作业绑定事件,如 error
, run
, success
, scheduled
和 canceled
。
archiveJob()
执行归档任务。此方法无需直接调用,因为它由计划的作业内部使用。
cancelJob()
取消当前的归档作业。
rescheduleJob(archiveScheduleRule)
使用新的时间规则 archiveScheduleRule
重新调度现有作业。
invoke()
手动触发归档作业。
配置
在实例化时传递的配置对象支持以下属性:
- modelRef: 带有数据操作方法的集合模型引用。
- db: 数据库实例。
- config: 归档过程的配置选项。
- logger: 用于输出信息的日志器。
- archiveScheduleRule: 归档作业调度的时间配置。
- archiveOptions: 特定于归档查询和参数的选项。
- errorCallback: 错误处理的回调函数。
archiveScheduleRule
说明
archiveScheduleRule
是定义归档任务调度规则的对象。此规则指定了任务执行的具体时间,包括秒、分钟和小时:
- second: 一分钟内的秒数(0-59)。
- minute: 一小时内的分钟数(0-59)。
- hour: 一天内的小时数(0-23)。
例如,如果你希望每天的凌晨 1 点执行归档任务,可以设置 archiveScheduleRule
如下:
{
second: 0,
minute: 0,
hour: 1
}
事件
类处理多个事件以增强可靠性并提供作业状态的实时反馈:
- error: 作业失败时触发。
- run: 作业开始运行时触发。
- success: 作业成功完成时触发。
- scheduled: 成功调度作业时发生。
- canceled: 作业被取消时触发。
工具函数
import { regularArchiveUtils } from 'hc-sort-archive-adapter';
regularArchiveUtils
提供了一些实用工具函数:
objectIdWithTimestamp(timestamp)
根据给定的时间戳生成一个 MongoDB 的 ObjectId。时间戳可以是字符串或 Date 对象。
checkModuleLoaded(modulePath)
检查并加载指定路径的模块。如果模块加载失败,会自动重试,直到加载成功。
checkUntilValueLoad(getValue, interval = 1000)
定期检查一个值是否已加载,直到值不再为 null 或 undefined。getValue
必须是一个返回要检查的值的函数。
示例
以下是如何设置和使用 RegularArchive
类的示例:
// 设置新的归档作业
archiveInstance.init();
// 手动触发归档作业
archiveInstance.invoke();
// 使用新规则重新调度作业
archiveInstance.rescheduleJob({ hour: 2, minute: 30, second: 0 });
// 如果不再需要,取消作业
archiveInstance.cancelJob();
开发
运行测试
npm test
构建项目
npm run build
贡献
欢迎提交 Issue 和 Pull Request 来贡献代码。
许可证
ISC
请确认是否需要进一步修改或补充信息。