Use bee-queue instead of Kue
This commit is contained in:
parent
f778696a76
commit
77b493c9b0
8 changed files with 25 additions and 53 deletions
|
@ -1,11 +1,7 @@
|
||||||
# Management guide
|
# Management guide
|
||||||
|
|
||||||
## Check the status of the job queue
|
## Check the status of the job queue
|
||||||
In the directory of Misskey:
|
coming soon
|
||||||
``` shell
|
|
||||||
node_modules/kue/bin/kue-dashboard -p 3050
|
|
||||||
```
|
|
||||||
When you access port 3050, you will see the UI.
|
|
||||||
|
|
||||||
## Mark as 'admin' user
|
## Mark as 'admin' user
|
||||||
``` shell
|
``` shell
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
# 運営ガイド
|
# 運営ガイド
|
||||||
|
|
||||||
## ジョブキューの状態を調べる
|
## ジョブキューの状態を調べる
|
||||||
Misskeyのディレクトリで:
|
coming soon
|
||||||
``` shell
|
|
||||||
node_modules/kue/bin/kue-dashboard -p 3050
|
|
||||||
```
|
|
||||||
ポート3050にアクセスするとUIが表示されます
|
|
||||||
|
|
||||||
## 管理者ユーザーを設定する
|
## 管理者ユーザーを設定する
|
||||||
``` shell
|
``` shell
|
||||||
|
|
|
@ -55,7 +55,6 @@
|
||||||
"@types/koa-send": "4.1.1",
|
"@types/koa-send": "4.1.1",
|
||||||
"@types/koa-views": "2.0.3",
|
"@types/koa-views": "2.0.3",
|
||||||
"@types/koa__cors": "2.2.2",
|
"@types/koa__cors": "2.2.2",
|
||||||
"@types/kue": "0.11.9",
|
|
||||||
"@types/minio": "6.0.2",
|
"@types/minio": "6.0.2",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.3",
|
||||||
|
@ -86,6 +85,7 @@
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
|
"bee-queue": "1.2.2",
|
||||||
"bootstrap-vue": "2.0.0-rc.11",
|
"bootstrap-vue": "2.0.0-rc.11",
|
||||||
"cafy": "11.3.0",
|
"cafy": "11.3.0",
|
||||||
"chalk": "2.4.1",
|
"chalk": "2.4.1",
|
||||||
|
@ -144,7 +144,6 @@
|
||||||
"koa-send": "5.0.0",
|
"koa-send": "5.0.0",
|
||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"kue": "0.11.6",
|
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.1.0",
|
||||||
"mecab-async": "0.1.2",
|
"mecab-async": "0.1.2",
|
||||||
"minio": "6.0.0",
|
"minio": "6.0.0",
|
||||||
|
|
|
@ -31,9 +31,6 @@ if (process.env.NODE_ENV != 'production') {
|
||||||
process.env.DEBUG = 'misskey:*';
|
process.env.DEBUG = 'misskey:*';
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://github.com/Automattic/kue/issues/822
|
|
||||||
require('events').EventEmitter.prototype._maxListeners = 512;
|
|
||||||
|
|
||||||
// Start app
|
// Start app
|
||||||
main();
|
main();
|
||||||
|
|
||||||
|
|
|
@ -1,52 +1,36 @@
|
||||||
import { createQueue } from 'kue';
|
import * as Queue from 'bee-queue';
|
||||||
|
|
||||||
import config from '../config';
|
import config from '../config';
|
||||||
import http from './processors/http';
|
import http from './processors/http';
|
||||||
import { ILocalUser } from '../models/user';
|
import { ILocalUser } from '../models/user';
|
||||||
|
|
||||||
const queue = createQueue({
|
const queue = new Queue('misskey', {
|
||||||
redis: {
|
redis: {
|
||||||
port: config.redis.port,
|
port: config.redis.port,
|
||||||
host: config.redis.host,
|
host: config.redis.host,
|
||||||
auth: config.redis.pass
|
password: config.redis.pass
|
||||||
}
|
},
|
||||||
|
|
||||||
|
removeOnSuccess: true,
|
||||||
|
removeOnFailure: true
|
||||||
});
|
});
|
||||||
|
|
||||||
process.once('SIGTERM', () => {
|
export function createHttpJob(data: any) {
|
||||||
queue.shutdown(5000, (err: any) => {
|
return queue.createJob(data)
|
||||||
console.log('Kue shutdown: ', err || '');
|
.retries(4)
|
||||||
process.exit(0);
|
.backoff('exponential', 16384) // 16s
|
||||||
});
|
.save();
|
||||||
});
|
|
||||||
|
|
||||||
export function createHttp(data: any) {
|
|
||||||
return queue
|
|
||||||
.create('http', data)
|
|
||||||
.removeOnComplete(true)
|
|
||||||
.events(false)
|
|
||||||
.attempts(8)
|
|
||||||
.backoff({ delay: 16384, type: 'exponential' });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deliver(user: ILocalUser, content: any, to: any) {
|
export function deliver(user: ILocalUser, content: any, to: any) {
|
||||||
createHttp({
|
createHttpJob({
|
||||||
title: 'deliver',
|
|
||||||
type: 'deliver',
|
type: 'deliver',
|
||||||
user,
|
user,
|
||||||
content,
|
content,
|
||||||
to
|
to
|
||||||
}).save();
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function() {
|
export default function() {
|
||||||
/*
|
queue.process(8, http);
|
||||||
256 is the default concurrency limit of Mozilla Firefox and Google
|
|
||||||
Chromium.
|
|
||||||
a8af215e691f3a2205a3758d2d96e9d328e100ff - chromium/src.git - Git at Google
|
|
||||||
https://chromium.googlesource.com/chromium/src.git/+/a8af215e691f3a2205a3758d2d96e9d328e100ff
|
|
||||||
Network.http.max-connections - MozillaZine Knowledge Base
|
|
||||||
http://kb.mozillazine.org/Network.http.max-connections
|
|
||||||
*/
|
|
||||||
//queue.process('http', 256, http);
|
|
||||||
queue.process('http', 128, http);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import * as kue from 'kue';
|
import * as bq from 'bee-queue';
|
||||||
|
|
||||||
import request from '../../../remote/activitypub/request';
|
import request from '../../../remote/activitypub/request';
|
||||||
|
|
||||||
export default async (job: kue.Job, done: any): Promise<void> => {
|
export default async (job: bq.Job, done: any): Promise<void> => {
|
||||||
try {
|
try {
|
||||||
await request(job.data.user, job.data.to, job.data.content);
|
await request(job.data.user, job.data.to, job.data.content);
|
||||||
done();
|
done();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import * as kue from 'kue';
|
import * as bq from 'bee-queue';
|
||||||
import * as debug from 'debug';
|
import * as debug from 'debug';
|
||||||
|
|
||||||
const httpSignature = require('http-signature');
|
const httpSignature = require('http-signature');
|
||||||
|
@ -10,7 +10,7 @@ import { resolvePerson } from '../../../remote/activitypub/models/person';
|
||||||
const log = debug('misskey:queue:inbox');
|
const log = debug('misskey:queue:inbox');
|
||||||
|
|
||||||
// ユーザーのinboxにアクティビティが届いた時の処理
|
// ユーザーのinboxにアクティビティが届いた時の処理
|
||||||
export default async (job: kue.Job, done: any): Promise<void> => {
|
export default async (job: bq.Job, done: any): Promise<void> => {
|
||||||
const signature = job.data.signature;
|
const signature = job.data.signature;
|
||||||
const activity = job.data.activity;
|
const activity = job.data.activity;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import * as Router from 'koa-router';
|
||||||
const json = require('koa-json-body');
|
const json = require('koa-json-body');
|
||||||
const httpSignature = require('http-signature');
|
const httpSignature = require('http-signature');
|
||||||
|
|
||||||
import { createHttp } from '../queue';
|
import { createHttpJob } from '../queue';
|
||||||
import pack from '../remote/activitypub/renderer';
|
import pack from '../remote/activitypub/renderer';
|
||||||
import Note from '../models/note';
|
import Note from '../models/note';
|
||||||
import User, { isLocalUser, ILocalUser, IUser } from '../models/user';
|
import User, { isLocalUser, ILocalUser, IUser } from '../models/user';
|
||||||
|
@ -30,11 +30,11 @@ function inbox(ctx: Router.IRouterContext) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
createHttp({
|
createHttpJob({
|
||||||
type: 'processInbox',
|
type: 'processInbox',
|
||||||
activity: ctx.request.body,
|
activity: ctx.request.body,
|
||||||
signature
|
signature
|
||||||
}).save();
|
});
|
||||||
|
|
||||||
ctx.status = 202;
|
ctx.status = 202;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue