libi

Results 8 comments of libi
trafficstars

try my repo: http://github.com/libi/mgo ; add mongo 5.0 sasl auth

实现该特性需要完全理解 [robfig/cron](https://github.com/robfig/cron) 的设计,扩展分布式状态设计。

初始化时用option的方式也实现类似bool的效果 例如 ``` enable := true var cronIns *Dcron if enable { cronIns = dcron.New(dcron.WithDistributed(dcron.Driver)) }else { cronIns = dcron.New() } ``` 注入时使用cronIns实例即可。

@dxyinme 我用这个项目申请了2个jetbrains Licenses, 给你一个呀 给我发个jetbrains的登录邮箱把你拉进来.

> 补充一下这些功能,会更好一些 > > **1、添加任务监控和报警功能**: 允许使用者配置邮件或者飞书、钉钉之类机器人,任务失败通知发送到相应地方 另外panic告警 **2、bash 命令支持**: 环境变量设定支持 / 命令宏替换支持 第一个可以作为一个 web_hook 配置项,任务失败时触发. 第二个可以展开说说,建议新起一个issues。

API感觉还能继续优化一下,我觉得有2个点: 1. 已经把cron内置了,所以dcron的初始化函数可以和cron一样了.最终实现的效果就是之前使用cron的用户只需要替换包名就能无缝替换. 如果需要启用分布式,附加带driver的配置即可. 2. driver包独立:项目本身依赖的三方库其实并不多,主要是各个driver引入带来的间接引入.所以可以考虑将driver目录整合一下提取出接口,具体实现都使用独立包含go.mod的子目录(一个仓库下的多个go mod). 这样对于只使用主项目时的依赖会非常简洁.

> 关于driver包独立: 这两天尝试了一下发现想要独立出去略微有些困难,有一种方法是对于每一个driver新开一个repo,要在一个仓库下的话,可能就要用go work来共同管理了 每个driver新开一个 repo 和 使用子目录新的go.mod实现基本是一样的, 如果子目录下有go.mod 这个子目录对于go就是一个独立的包名,不会受到主仓库的影响。