LetServerRun 新增延迟队列,发任务接口,自动客服消息等功能。欢迎试用和提各种建议~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Muninn
V2EX    分享创造

LetServerRun 新增延迟队列,发任务接口,自动客服消息等功能。欢迎试用和提各种建议~

  •  
  • /li>
  •   Muninn
    hyacinthus 2021-04-30 10:57:08 +08:00 1789 次点击
    这是一个创建于 1624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,除了上次发的关注自己 V 站账号动态的功能,LetServerRun 最近还更新了不少功能,欢迎大家使用哦。

    • 现在除了可以用公众号发任务,也可以在 CI 和 Agent 中调用发任务接口给指定 Agent 发任务了。
    • 可以使用 message/auto 系列接口,优先使用客服消息给自己发,每次和公众号互动都会 48 小时内有 20 条客服消息额度。当没有客服消息可以发的时候,会用模版消息代替。
    • 延时队列

    下面详细介绍下延时队列吧

    为什么需要延迟队列

    很多业务场景都要用到延迟队列:

    • 新订单如果未付款在一个小时后自动关闭。
    • 订单发货后 15 天自动确认收货。
    • 餐厅消费后一个小时请求评价。

    类似的还有很多,不一一列举了。

    延迟队列的误解

    因为叫队列,所以如果项目用了某种队列,第一反应就是去看这种队列是不是支持延迟队列

    很不幸,各家队列和云服务商提供的队列,都对延迟队列支持的不怎么好。只有 RabbitMQ 稍微好一点。

    为什么会这样呢?因为延迟队列和传统的队列压根是两种东西。想兼容当然不容易了。 传统的队列一般都是先进先出,可以是生产消费模式或者广播订阅模式。更侧重于性能、可靠性、顺序性等方面的改善。

    但是延迟队列实际上是一种持久存储的计划任务,它更应该和传统的队列结合使用。Job 存储在一个安全可靠的地方,到时间了拿出来放某个队列供消费。

    为什么 LetServerRun 是一个不错的选择

    1. 网上有很多在代码中实现延迟队列的教程,各个语言也有轮子,这个方式是最不推荐的。把信息存在内存当中,难道服务永远不升级重启了?
    2. 用 Redis 当延迟队列,可以使用 zset 或者 过期事件实现。问题是同样的,一般的 redis 没那么可靠,除非你用的有可靠性保障的 Redis 集群。
    3. 自己写一个有独立存储的延迟队列。如果你有这个力气当然是可以的……一般来说延迟队列在总的需求中占比很小,你可能没有那么多的时间预算去写一个服务,然后维护它。
    4. 想找一个类似的云服务,结果这个功能太小了,找不到。

    这个时候我们开箱即用的接口就很方便了。

    一个例子

    我已经在 坚橙艺术 中实际使用了一段时间,分享给大家。

    1. 订单 123 卖家发货后,调用延迟任务接口发送 15 天订单完成 123
    2. 如果买家在收货之后手动点击了确认收货,则系统自动调用订单完成的函数。
    3. 如果卖家在发货一周后着急确认,客服在询问买家确实收货后,在 LetServerRun 公众号发送 订单完成 123
    4. 15 天后,Agent 收到当时设定的延迟任务,会再执行一次。这就要求这个订单完成需要判断订单状态,保证自己是幂等的,重复执行也不会出错。
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2594 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:21 PVG 23:21 LAX 08:21 JFK 11:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86