nestjs-power-queues 1.0.26 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -16
- package/dist/index.cjs +4 -53
- package/dist/index.d.cts +4 -8
- package/dist/index.d.ts +4 -8
- package/dist/index.js +3 -51
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -31,8 +31,12 @@ yarn add nestjs-power-queues
|
|
|
31
31
|
```env
|
|
32
32
|
REDIS_QUEUES_HOST=127.0.0.1
|
|
33
33
|
REDIS_QUEUES_PORT=6379
|
|
34
|
+
REDIS_QUEUES_DATABASE=1
|
|
34
35
|
REDIS_QUEUES_PASSWORD=
|
|
35
|
-
|
|
36
|
+
REDIS_QUEUES_KEY_EXPIRE=300
|
|
37
|
+
REDIS_QUEUES_TLS_CA_CRT=
|
|
38
|
+
REDIS_QUEUES_TLS_KEY=
|
|
39
|
+
REDIS_QUEUES_TLS_CRT=
|
|
36
40
|
```
|
|
37
41
|
|
|
38
42
|
For information on creating connections to Redis, see **[nestjs-power-redis](https://www.npmjs.com/package/nestjs-power-redis)**
|
|
@@ -66,36 +70,85 @@ export class MyService {
|
|
|
66
70
|
) {}
|
|
67
71
|
|
|
68
72
|
async test() {
|
|
69
|
-
await this.queueService.addTasks('example:
|
|
70
|
-
{ payload },
|
|
71
|
-
]);
|
|
73
|
+
await this.queueService.addTasks('example:job', [ ...payload ]);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
```
|
|
75
77
|
|
|
76
|
-
### 4.
|
|
78
|
+
### 4. Example of a worker for executing a MySQL insert transaction
|
|
77
79
|
|
|
78
80
|
```ts
|
|
79
81
|
import { Injectable } from '@nestjs/common';
|
|
80
|
-
import {
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
import {
|
|
83
|
+
InjectRedis,
|
|
84
|
+
RedisService,
|
|
83
85
|
} from 'nestjs-power-redis';
|
|
84
|
-
import {
|
|
86
|
+
import {
|
|
87
|
+
QueueService,
|
|
88
|
+
Task,
|
|
89
|
+
} from 'nestjs-power-queues';
|
|
90
|
+
import {
|
|
91
|
+
isArrFilled,
|
|
92
|
+
isObjFilled,
|
|
93
|
+
} from 'full-utils';
|
|
94
|
+
import { MysqlService } from 'mysql';
|
|
95
|
+
import { Logger } from '../logger';
|
|
85
96
|
|
|
86
97
|
@Injectable()
|
|
87
|
-
export class
|
|
88
|
-
public readonly
|
|
89
|
-
public readonly
|
|
98
|
+
export class ExampleQueue extends QueueService {
|
|
99
|
+
public readonly logger: Logger = new Logger(ExampleQueue.name);
|
|
100
|
+
public readonly selectStuckCount: number = 256;
|
|
101
|
+
public readonly selectCount: number = 256;
|
|
102
|
+
public readonly retryCount: number = 3;
|
|
90
103
|
public readonly runOnInit: boolean = true;
|
|
91
|
-
public readonly
|
|
104
|
+
public readonly executeSync: boolean = true;
|
|
105
|
+
public readonly removeOnExecuted: boolean = true;
|
|
92
106
|
|
|
93
107
|
constructor(
|
|
94
108
|
@InjectRedis('queues') public readonly redisService: RedisService,
|
|
95
|
-
|
|
109
|
+
public readonly mysqlService: MysqlService,
|
|
110
|
+
) {
|
|
111
|
+
super(redisService);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
queueName(): string {
|
|
115
|
+
return 'mysql_create:example:table_name';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async onBatchReady(queueName: string, tasks: Task[]) {
|
|
119
|
+
const values = tasks
|
|
120
|
+
.filter((task) => isObjFilled(task.payload))
|
|
121
|
+
.map((task) => task.payload);
|
|
122
|
+
|
|
123
|
+
if (isArrFilled(values)) {
|
|
124
|
+
const queryRunner = this.mysqlService.connection('database_name').createQueryRunner();
|
|
125
|
+
|
|
126
|
+
await queryRunner.connect();
|
|
127
|
+
await queryRunner.startTransaction();
|
|
128
|
+
try {
|
|
129
|
+
await queryRunner
|
|
130
|
+
.manager
|
|
131
|
+
.createQueryBuilder()
|
|
132
|
+
.insert()
|
|
133
|
+
.into('table_name')
|
|
134
|
+
.values(values)
|
|
135
|
+
.execute();
|
|
136
|
+
await queryRunner.commitTransaction();
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
await queryRunner.rollbackTransaction();
|
|
140
|
+
throw err;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
await queryRunner.release();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
96
147
|
|
|
97
|
-
async
|
|
98
|
-
|
|
148
|
+
async onBatchError(err: any, queueName: string, tasks: Array<[ string, any, number, string, string, number ]>) {
|
|
149
|
+
this.logger.error('Transaction error', queueName, tasks.length, (process.env.NODE_ENV === 'production')
|
|
150
|
+
? err.message
|
|
151
|
+
: err, tasks.map((task) => task[1]));
|
|
99
152
|
}
|
|
100
153
|
}
|
|
101
154
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -25,23 +25,18 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
25
25
|
var index_exports = {};
|
|
26
26
|
__export(index_exports, {
|
|
27
27
|
InjectQueue: () => InjectQueue,
|
|
28
|
-
QueueModule: () => QueueModule,
|
|
29
28
|
QueueService: () => QueueService,
|
|
30
|
-
getQueueToken: () => getQueueToken
|
|
31
|
-
queueRoot: () => import_nestjs_power_redis2.redisRoot
|
|
29
|
+
getQueueToken: () => getQueueToken
|
|
32
30
|
});
|
|
33
31
|
module.exports = __toCommonJS(index_exports);
|
|
34
|
-
|
|
32
|
+
__reExport(index_exports, require("nestjs-power-redis"), module.exports);
|
|
33
|
+
__reExport(index_exports, require("power-queues"), module.exports);
|
|
35
34
|
|
|
36
35
|
// src/InjectQueue.ts
|
|
37
36
|
var import_common = require("@nestjs/common");
|
|
38
37
|
var getQueueToken = /* @__PURE__ */ __name((name) => `QueueService_${name}`, "getQueueToken");
|
|
39
38
|
var InjectQueue = /* @__PURE__ */ __name((name) => (0, import_common.Inject)(getQueueToken(name)), "InjectQueue");
|
|
40
39
|
|
|
41
|
-
// src/QueueModule.ts
|
|
42
|
-
var import_common2 = require("@nestjs/common");
|
|
43
|
-
var import_nestjs_power_redis = require("nestjs-power-redis");
|
|
44
|
-
|
|
45
40
|
// src/QueueService.ts
|
|
46
41
|
var import_power_queues = require("power-queues");
|
|
47
42
|
var _QueueService = class _QueueService extends import_power_queues.PowerQueues {
|
|
@@ -70,55 +65,11 @@ var _QueueService = class _QueueService extends import_power_queues.PowerQueues
|
|
|
70
65
|
};
|
|
71
66
|
__name(_QueueService, "QueueService");
|
|
72
67
|
var QueueService = _QueueService;
|
|
73
|
-
|
|
74
|
-
// src/QueueModule.ts
|
|
75
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
76
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
77
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
78
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
79
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
80
|
-
}
|
|
81
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
82
|
-
var _QueueModule = class _QueueModule {
|
|
83
|
-
static forRoot(names) {
|
|
84
|
-
const queueProviders = names.map((name) => ({
|
|
85
|
-
provide: getQueueToken(name),
|
|
86
|
-
useFactory: /* @__PURE__ */ __name((redisService) => {
|
|
87
|
-
return new QueueService(redisService);
|
|
88
|
-
}, "useFactory"),
|
|
89
|
-
inject: [
|
|
90
|
-
(0, import_nestjs_power_redis.getRedisToken)(name)
|
|
91
|
-
]
|
|
92
|
-
}));
|
|
93
|
-
return {
|
|
94
|
-
module: _QueueModule,
|
|
95
|
-
imports: [
|
|
96
|
-
import_nestjs_power_redis.RedisModule.forRoot(names)
|
|
97
|
-
],
|
|
98
|
-
providers: [
|
|
99
|
-
...queueProviders
|
|
100
|
-
],
|
|
101
|
-
exports: [
|
|
102
|
-
...queueProviders,
|
|
103
|
-
import_nestjs_power_redis.RedisModule
|
|
104
|
-
]
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
__name(_QueueModule, "QueueModule");
|
|
109
|
-
var QueueModule = _QueueModule;
|
|
110
|
-
QueueModule = _ts_decorate([
|
|
111
|
-
(0, import_common2.Module)({})
|
|
112
|
-
], QueueModule);
|
|
113
|
-
|
|
114
|
-
// src/index.ts
|
|
115
|
-
__reExport(index_exports, require("power-queues"), module.exports);
|
|
116
68
|
// Annotate the CommonJS export names for ESM import in node:
|
|
117
69
|
0 && (module.exports = {
|
|
118
70
|
InjectQueue,
|
|
119
|
-
QueueModule,
|
|
120
71
|
QueueService,
|
|
121
72
|
getQueueToken,
|
|
122
|
-
|
|
73
|
+
...require("nestjs-power-redis"),
|
|
123
74
|
...require("power-queues")
|
|
124
75
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { RedisService } from 'nestjs-power-redis';
|
|
2
|
-
export
|
|
3
|
-
import { DynamicModule, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
4
|
-
import { IORedisLike } from 'power-redis';
|
|
2
|
+
export * from 'nestjs-power-redis';
|
|
5
3
|
import { PowerQueues } from 'power-queues';
|
|
6
4
|
export * from 'power-queues';
|
|
5
|
+
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
6
|
+
import { IORedisLike } from 'power-redis';
|
|
7
7
|
|
|
8
8
|
declare const getQueueToken: (name: string) => string;
|
|
9
9
|
declare const InjectQueue: (name: string) => PropertyDecorator & ParameterDecorator;
|
|
10
10
|
|
|
11
|
-
declare class QueueModule {
|
|
12
|
-
static forRoot(names: string[]): DynamicModule;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
11
|
declare class QueueService extends PowerQueues implements OnModuleInit, OnModuleDestroy {
|
|
16
12
|
readonly redisService: RedisService;
|
|
17
13
|
readonly runOnInit: boolean;
|
|
@@ -22,4 +18,4 @@ declare class QueueService extends PowerQueues implements OnModuleInit, OnModule
|
|
|
22
18
|
onModuleDestroy(): Promise<void>;
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
export { InjectQueue,
|
|
21
|
+
export { InjectQueue, QueueService, getQueueToken };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { RedisService } from 'nestjs-power-redis';
|
|
2
|
-
export
|
|
3
|
-
import { DynamicModule, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
4
|
-
import { IORedisLike } from 'power-redis';
|
|
2
|
+
export * from 'nestjs-power-redis';
|
|
5
3
|
import { PowerQueues } from 'power-queues';
|
|
6
4
|
export * from 'power-queues';
|
|
5
|
+
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
6
|
+
import { IORedisLike } from 'power-redis';
|
|
7
7
|
|
|
8
8
|
declare const getQueueToken: (name: string) => string;
|
|
9
9
|
declare const InjectQueue: (name: string) => PropertyDecorator & ParameterDecorator;
|
|
10
10
|
|
|
11
|
-
declare class QueueModule {
|
|
12
|
-
static forRoot(names: string[]): DynamicModule;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
11
|
declare class QueueService extends PowerQueues implements OnModuleInit, OnModuleDestroy {
|
|
16
12
|
readonly redisService: RedisService;
|
|
17
13
|
readonly runOnInit: boolean;
|
|
@@ -22,4 +18,4 @@ declare class QueueService extends PowerQueues implements OnModuleInit, OnModule
|
|
|
22
18
|
onModuleDestroy(): Promise<void>;
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
export { InjectQueue,
|
|
21
|
+
export { InjectQueue, QueueService, getQueueToken };
|
package/dist/index.js
CHANGED
|
@@ -4,17 +4,14 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
5
|
|
|
6
6
|
// src/index.ts
|
|
7
|
-
|
|
7
|
+
export * from "nestjs-power-redis";
|
|
8
|
+
export * from "power-queues";
|
|
8
9
|
|
|
9
10
|
// src/InjectQueue.ts
|
|
10
11
|
import { Inject } from "@nestjs/common";
|
|
11
12
|
var getQueueToken = /* @__PURE__ */ __name((name) => `QueueService_${name}`, "getQueueToken");
|
|
12
13
|
var InjectQueue = /* @__PURE__ */ __name((name) => Inject(getQueueToken(name)), "InjectQueue");
|
|
13
14
|
|
|
14
|
-
// src/QueueModule.ts
|
|
15
|
-
import { Module } from "@nestjs/common";
|
|
16
|
-
import { RedisModule, getRedisToken } from "nestjs-power-redis";
|
|
17
|
-
|
|
18
15
|
// src/QueueService.ts
|
|
19
16
|
import { PowerQueues } from "power-queues";
|
|
20
17
|
var _QueueService = class _QueueService extends PowerQueues {
|
|
@@ -43,53 +40,8 @@ var _QueueService = class _QueueService extends PowerQueues {
|
|
|
43
40
|
};
|
|
44
41
|
__name(_QueueService, "QueueService");
|
|
45
42
|
var QueueService = _QueueService;
|
|
46
|
-
|
|
47
|
-
// src/QueueModule.ts
|
|
48
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
49
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
50
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
51
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
52
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
53
|
-
}
|
|
54
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
55
|
-
var _QueueModule = class _QueueModule {
|
|
56
|
-
static forRoot(names) {
|
|
57
|
-
const queueProviders = names.map((name) => ({
|
|
58
|
-
provide: getQueueToken(name),
|
|
59
|
-
useFactory: /* @__PURE__ */ __name((redisService) => {
|
|
60
|
-
return new QueueService(redisService);
|
|
61
|
-
}, "useFactory"),
|
|
62
|
-
inject: [
|
|
63
|
-
getRedisToken(name)
|
|
64
|
-
]
|
|
65
|
-
}));
|
|
66
|
-
return {
|
|
67
|
-
module: _QueueModule,
|
|
68
|
-
imports: [
|
|
69
|
-
RedisModule.forRoot(names)
|
|
70
|
-
],
|
|
71
|
-
providers: [
|
|
72
|
-
...queueProviders
|
|
73
|
-
],
|
|
74
|
-
exports: [
|
|
75
|
-
...queueProviders,
|
|
76
|
-
RedisModule
|
|
77
|
-
]
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
__name(_QueueModule, "QueueModule");
|
|
82
|
-
var QueueModule = _QueueModule;
|
|
83
|
-
QueueModule = _ts_decorate([
|
|
84
|
-
Module({})
|
|
85
|
-
], QueueModule);
|
|
86
|
-
|
|
87
|
-
// src/index.ts
|
|
88
|
-
export * from "power-queues";
|
|
89
43
|
export {
|
|
90
44
|
InjectQueue,
|
|
91
|
-
QueueModule,
|
|
92
45
|
QueueService,
|
|
93
|
-
getQueueToken
|
|
94
|
-
queueRoot
|
|
46
|
+
getQueueToken
|
|
95
47
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nestjs-power-queues",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"description": "High-performance Redis Streams queue integration for NestJS based on power-queues.",
|
|
5
5
|
"author": "ihor-bielchenko",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,8 +87,7 @@
|
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@nestjs-labs/nestjs-ioredis": "^11.0.4",
|
|
89
89
|
"@nestjs/common": "^11.1.8",
|
|
90
|
-
"full-utils": "^3.0.9",
|
|
91
90
|
"nestjs-power-redis": "^1.0.16",
|
|
92
|
-
"power-queues": "^2.1.
|
|
91
|
+
"power-queues": "^2.1.12"
|
|
93
92
|
}
|
|
94
93
|
}
|