介绍
hubot-short-straw是 Hubot 的一个 npm 包,它提供了一种有趣的机制来分配任务给 Hubot 的不同实例。它的基本原理是使用 Redis 存储所有实例之间的排除权(exclusion)。
安装
使用 npm 安装 hubot-short-straw
:
npm install hubot-short-straw --save
使用
按照下面的步骤使用hubot-short-straw:
- 在 Hubot 的入口脚本中,引入
hubot-short-straw
和 Redis:
const Redis = require('ioredis'); const ShortStraw = require('hubot-short-straw')(robot, { redis: new Redis() });
- 在Hubot的聊天室中为每个实例赋予具体的名称:
hubot instance myinstance
- 如有必要,一些实例可能由于某些原因需要被排除在分配任务的可能性之外。下面的命令可以将实例排除在分配任务之外:
hubot exclude myinstance
- 现在,每个实例都可以通过如下命令获取下一次分配的任务:
hubot straw
- 如果整个聊天室需要一次性获得下一个任务,可以使用以下命令:
hubot straw all
示例代码
下面是一个示例代码,它演示了如何使用 hubot-short-straw
分配给不同的Hubot实例任务。
-- -------------------- ---- ------- ----- ----- - ------------------- ----- ---------- - ----------------------------- -------------- - -------- ------- - ----- ----- - --- -------- ---------------------- ----- ------------- - --------------------- ----------- ----------------------- ----- --------------- - ----------------------- ----------- -- -- ---------- ----------------- - ----- --- --------------------- ------- ----- -- - ----- -------- - ---------------------- -- -- ---------- ---- -- -------------- --- ------------------- - ---------- ----------------- ----- ----------- ---------- - ---- -- -------------- --- --------------------- - ------------- ----------------- ---- ---- ------- -------- ---------- - --- --
指导意义
- hubot-short-straw 提供了一种简单而有趣的机制来分配任务给 Hubot 的不同实例,更好的分配任务可以使 Hubot 实例更高效的执行任务。
- 使用redis存储实例之间的排除权(exclusion)可以确保任务的公平分配,并且排除了系统中存在的竞争条件的风险。
- 这也为使用 Hubot 的开发者提供了一个有用的工具,并且它对于对程序设计模式有高需求的前端工程师可以提供启发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055f3981e8991b448dcc8e