Skip to content

Commit 8e57738

Browse files
authored
fix: bull-board missing export adapter (midwayjs#4351)
1 parent 3bfa0c5 commit 8e57738

File tree

7 files changed

+84
-11
lines changed

7 files changed

+84
-11
lines changed

packages/bull-board/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@midwayjs/bull-board",
33
"version": "3.20.6",
4-
"description": "midway component for bull",
4+
"description": "midway component for bull-board",
55
"main": "dist/index.js",
66
"typings": "index.d.ts",
77
"scripts": {

packages/bull-board/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ export * from './board.middleware';
33
export * from './board.manager';
44
export * from './interface';
55
export * as BullBoard from '@bull-board/api';
6+
export { MidwayAdapter } from './adapter';
7+
export { BullAdapter } from '@bull-board/api/bullAdapter';
8+
export { BullMQAdapter } from '@bull-board/api/bullMQAdapter';

packages/bull-board/test/index.test.ts

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { createApp, close, createHttpRequest, createLightApp } from '@midwayjs/m
22
import { join } from 'path';
33
import * as bullboard from '../src';
44
import * as bullmq from '@midwayjs/bullmq';
5+
import * as bull from '@midwayjs/bull';
6+
import * as koa from '@midwayjs/koa';
57

68
describe(`/test/index.test.ts`, () => {
79
it('test ui in koa', async () => {
@@ -78,7 +80,7 @@ describe(`/test/index.test.ts`, () => {
7880

7981
it('test using package bullmq', async () => {
8082
const app = await createApp(join(__dirname, 'fixtures', 'base-app-bullmq'));
81-
83+
8284
const bullFramework = app.getApplicationContext().get(bullmq.Framework);
8385
const testQueue = bullFramework.getQueue('test');
8486
await testQueue?.runJob({name: 'stone-jin'});
@@ -96,4 +98,66 @@ describe(`/test/index.test.ts`, () => {
9698

9799
await close(app);
98100
});
101+
102+
it('test dynamic add queue with bullmq', async () => {
103+
const app = await createLightApp('', {
104+
imports: [koa, bullboard, bullmq],
105+
globalConfig: {
106+
keys: 123,
107+
bullmq: {
108+
defaultConnection: {
109+
host: '127.0.0.1',
110+
port: 6379,
111+
}
112+
},
113+
}
114+
});
115+
116+
const bullFramework = app.getApplicationContext().get(bullmq.Framework);
117+
const testQueue = bullFramework.createQueue('test');
118+
await testQueue?.addJobToQueue({name: 'stone-jin'});
119+
120+
const manager = await app.getApplicationContext().getAsync(bullboard.BullBoardManager);
121+
manager.addQueue(new bullboard.BullMQAdapter(testQueue) as any);
122+
123+
const result = await createHttpRequest(app).get('/ui/api/queues?activeQueue=test&page=1&jobsPerPage=10');
124+
expect(result.status).toBe(200);
125+
expect(result.body.queues.length).toBe(1);
126+
expect(result.body.queues[0].type).toBe('bullmq');
127+
expect(result.headers['content-type']).toMatch('application/json');
128+
129+
await close(app);
130+
});
131+
132+
it('test dynamic add queue with bull', async () => {
133+
const app = await createLightApp('', {
134+
imports: [koa, bullboard, bull],
135+
globalConfig: {
136+
keys: 123,
137+
bull: {
138+
defaultQueueOptions: {
139+
redis: {
140+
port: 6379,
141+
host: '127.0.0.1',
142+
},
143+
}
144+
},
145+
}
146+
});
147+
148+
const bullFramework = app.getApplicationContext().get(bull.Framework);
149+
const testQueue = bullFramework.createQueue('test-bull-board');
150+
await testQueue?.addJobToQueue({name: 'stone-jin'});
151+
152+
const manager = await app.getApplicationContext().getAsync(bullboard.BullBoardManager);
153+
manager.addQueue(new bullboard.BullAdapter(testQueue));
154+
155+
const result = await createHttpRequest(app).get('/ui/api/queues?activeQueue=test&page=1&jobsPerPage=10');
156+
expect(result.status).toBe(200);
157+
expect(result.body.queues.length).toBe(1);
158+
expect(result.body.queues[0].type).toBe('bull');
159+
expect(result.headers['content-type']).toMatch('application/json');
160+
161+
await close(app);
162+
});
99163
});

site/docs/extensions/bull.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -822,18 +822,20 @@ export class MainConfiguration {
822822
@Inject()
823823
bullBoardManager: bullBoard.BullBoardManager;
824824

825-
async onReady() {
825+
async onServerReady() {
826826
const testQueue = this.bullFramework.createQueue('test', {
827827
// ...
828828
});
829829

830-
this.bullBoardManager.addQueue(testQueue);
830+
this.bullBoardManager.addQueue(new bullBoard.BullAdapter(testQueue);
831831
}
832832
}
833833
```
834834
835835
836836
837+
838+
837839
## 常见问题
838840
839841
### 1、EVALSHA 错误

site/docs/extensions/bullmq.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,12 +532,14 @@ export class MainConfiguration {
532532
@Inject()
533533
bullBoardManager: bullBoard.BullBoardManager;
534534

535-
async onReady() {
535+
async onServerReady() {
536536
const testQueue = this.bullmqFramework.createQueue('test', {
537537
// ...
538538
});
539539

540-
this.bullBoardManager.addQueue(testQueue);
540+
this.bullBoardManager.addQueue(new bullBoard.BullMQAdapter(testQueue) as any);
541541
}
542542
}
543543
```
544+
545+
由于最新 bull-board 要求最低 Node.js 版本为 v20,所以 Midway v3 无法将 bull-board 升级;在 v5.23.0 版本下的 `bull-board` 存在类型定义问题,采用 `as any` 的方式绕过。

site/i18n/en/docusaurus-plugin-content-docs/current/extensions/bull.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -819,12 +819,12 @@ export class MainConfiguration {
819819
@Inject()
820820
bullBoardManager: bullBoard.BullBoardManager;
821821

822-
async onReady() {
822+
async onServerReady() {
823823
const testQueue = this.bullFramework.createQueue('test', {
824824
// ...
825825
});
826826

827-
this.bullBoardManager.addQueue(testQueue);
827+
this.bullBoardManager.addQueue(new bullBoard.BullAdapter(testQueue));
828828
}
829829
}
830830
```

site/i18n/en/docusaurus-plugin-content-docs/current/extensions/bullmq.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -532,12 +532,14 @@ export class MainConfiguration {
532532
@Inject()
533533
bullBoardManager: bullBoard.BullBoardManager;
534534

535-
async onReady() {
535+
async onServerReady() {
536536
const testQueue = this.bullmqFramework.createQueue('test', {
537537
// ...
538538
});
539539

540-
this.bullBoardManager.addQueue(testQueue);
540+
this.bullBoardManager.addQueue(new bullBoard.BullMQAdapter(testQueue) as any);
541541
}
542542
}
543-
```
543+
```
544+
545+
> Note: The latest bull-board requires Node.js v20 or above, so Midway v3 cannot upgrade bull-board; in bull-board v5.23.0 there is a type definition issue, so we use `as any` to bypass it.

0 commit comments

Comments
 (0)