summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/initialize.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
commit2795fe457909c687f668d020ef65d52abc3182fb (patch)
tree0a52e4e4d854333496fcc487560c93c3de5d5eb5 /packages/backend/src/queue/initialize.ts
parentMerge branch 'develop' (diff)
parent12.96.0 (diff)
downloadmisskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.gz
misskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.bz2
misskey-2795fe457909c687f668d020ef65d52abc3182fb.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/queue/initialize.ts')
-rw-r--r--packages/backend/src/queue/initialize.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/backend/src/queue/initialize.ts b/packages/backend/src/queue/initialize.ts
new file mode 100644
index 0000000000..31102a3ed2
--- /dev/null
+++ b/packages/backend/src/queue/initialize.ts
@@ -0,0 +1,33 @@
+import * as Bull from 'bull';
+import config from '@/config/index';
+
+export function initialize<T>(name: string, limitPerSec = -1) {
+ return new Bull<T>(name, {
+ redis: {
+ port: config.redis.port,
+ host: config.redis.host,
+ password: config.redis.pass,
+ db: config.redis.db || 0,
+ },
+ prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue',
+ limiter: limitPerSec > 0 ? {
+ max: limitPerSec,
+ duration: 1000
+ } : undefined,
+ settings: {
+ backoffStrategies: {
+ apBackoff
+ }
+ }
+ });
+}
+
+// ref. https://github.com/misskey-dev/misskey/pull/7635#issue-971097019
+function apBackoff(attemptsMade: number, err: Error) {
+ const baseDelay = 60 * 1000; // 1min
+ const maxBackoff = 8 * 60 * 60 * 1000; // 8hours
+ let backoff = (Math.pow(2, attemptsMade) - 1) * baseDelay;
+ backoff = Math.min(backoff, maxBackoff);
+ backoff += Math.round(backoff * Math.random() * 0.2);
+ return backoff;
+}