@hotmeshio/hotmesh 0.6.0 → 0.7.0
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 +179 -142
- package/build/index.d.ts +3 -1
- package/build/index.js +5 -1
- package/build/modules/enums.d.ts +18 -0
- package/build/modules/enums.js +27 -1
- package/build/modules/utils.d.ts +27 -0
- package/build/modules/utils.js +79 -1
- package/build/package.json +24 -10
- package/build/services/connector/factory.d.ts +1 -1
- package/build/services/connector/factory.js +15 -1
- package/build/services/connector/providers/ioredis.d.ts +9 -0
- package/build/services/connector/providers/ioredis.js +26 -0
- package/build/services/connector/providers/postgres.js +3 -0
- package/build/services/connector/providers/redis.d.ts +9 -0
- package/build/services/connector/providers/redis.js +38 -0
- package/build/services/hotmesh/index.d.ts +66 -15
- package/build/services/hotmesh/index.js +84 -15
- package/build/services/memflow/index.d.ts +100 -14
- package/build/services/memflow/index.js +100 -14
- package/build/services/memflow/worker.d.ts +97 -0
- package/build/services/memflow/worker.js +217 -0
- package/build/services/memflow/workflow/proxyActivities.d.ts +74 -3
- package/build/services/memflow/workflow/proxyActivities.js +81 -4
- package/build/services/router/consumption/index.d.ts +2 -1
- package/build/services/router/consumption/index.js +38 -2
- package/build/services/router/error-handling/index.d.ts +3 -3
- package/build/services/router/error-handling/index.js +48 -13
- package/build/services/router/index.d.ts +1 -0
- package/build/services/router/index.js +2 -1
- package/build/services/search/factory.js +8 -0
- package/build/services/search/providers/redis/ioredis.d.ts +23 -0
- package/build/services/search/providers/redis/ioredis.js +189 -0
- package/build/services/search/providers/redis/redis.d.ts +23 -0
- package/build/services/search/providers/redis/redis.js +202 -0
- package/build/services/store/factory.js +9 -1
- package/build/services/store/index.d.ts +3 -2
- package/build/services/store/providers/postgres/kvtypes/hash/basic.js +36 -6
- package/build/services/store/providers/postgres/kvtypes/hash/expire.js +12 -2
- package/build/services/store/providers/postgres/kvtypes/hash/scan.js +30 -10
- package/build/services/store/providers/postgres/kvtypes/list.js +68 -10
- package/build/services/store/providers/postgres/kvtypes/string.js +60 -10
- package/build/services/store/providers/postgres/kvtypes/zset.js +92 -22
- package/build/services/store/providers/postgres/postgres.d.ts +3 -3
- package/build/services/store/providers/redis/_base.d.ts +137 -0
- package/build/services/store/providers/redis/_base.js +980 -0
- package/build/services/store/providers/redis/ioredis.d.ts +20 -0
- package/build/services/store/providers/redis/ioredis.js +190 -0
- package/build/services/store/providers/redis/redis.d.ts +18 -0
- package/build/services/store/providers/redis/redis.js +199 -0
- package/build/services/stream/factory.js +17 -1
- package/build/services/stream/providers/postgres/kvtables.js +76 -23
- package/build/services/stream/providers/postgres/lifecycle.d.ts +19 -0
- package/build/services/stream/providers/postgres/lifecycle.js +54 -0
- package/build/services/stream/providers/postgres/messages.d.ts +56 -0
- package/build/services/stream/providers/postgres/messages.js +253 -0
- package/build/services/stream/providers/postgres/notifications.d.ts +59 -0
- package/build/services/stream/providers/postgres/notifications.js +357 -0
- package/build/services/stream/providers/postgres/postgres.d.ts +110 -11
- package/build/services/stream/providers/postgres/postgres.js +196 -488
- package/build/services/stream/providers/postgres/scout.d.ts +68 -0
- package/build/services/stream/providers/postgres/scout.js +233 -0
- package/build/services/stream/providers/postgres/stats.d.ts +49 -0
- package/build/services/stream/providers/postgres/stats.js +113 -0
- package/build/services/stream/providers/redis/ioredis.d.ts +61 -0
- package/build/services/stream/providers/redis/ioredis.js +272 -0
- package/build/services/stream/providers/redis/redis.d.ts +61 -0
- package/build/services/stream/providers/redis/redis.js +305 -0
- package/build/services/sub/factory.js +8 -0
- package/build/services/sub/providers/postgres/postgres.js +37 -5
- package/build/services/sub/providers/redis/ioredis.d.ts +20 -0
- package/build/services/sub/providers/redis/ioredis.js +161 -0
- package/build/services/sub/providers/redis/redis.d.ts +18 -0
- package/build/services/sub/providers/redis/redis.js +148 -0
- package/build/services/worker/index.d.ts +1 -0
- package/build/services/worker/index.js +2 -0
- package/build/types/hotmesh.d.ts +42 -2
- package/build/types/index.d.ts +4 -3
- package/build/types/index.js +4 -1
- package/build/types/memflow.d.ts +32 -0
- package/build/types/provider.d.ts +17 -1
- package/build/types/redis.d.ts +258 -0
- package/build/types/redis.js +11 -0
- package/build/types/stream.d.ts +92 -1
- package/index.ts +4 -0
- package/package.json +24 -10
|
@@ -9,8 +9,18 @@ const zsetModule = (context) => ({
|
|
|
9
9
|
return Promise.resolve(0);
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
try {
|
|
13
|
+
const res = await context.pgClient.query(sql, params);
|
|
14
|
+
return Number(res.rows[0]?.count || 0);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
// Connection closed during test cleanup - return 0
|
|
18
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
// Re-throw unexpected errors
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
14
24
|
}
|
|
15
25
|
},
|
|
16
26
|
_zadd(key, score, member, options) {
|
|
@@ -50,13 +60,23 @@ const zsetModule = (context) => ({
|
|
|
50
60
|
return Promise.resolve([]);
|
|
51
61
|
}
|
|
52
62
|
else {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
63
|
+
try {
|
|
64
|
+
const res = await context.pgClient.query(sql, params);
|
|
65
|
+
if (facet === 'WITHSCORES') {
|
|
66
|
+
// Include scores in the result
|
|
67
|
+
return res.rows.flatMap((row) => [row.member, row.score.toString()]);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return res.rows.map((row) => row.member);
|
|
71
|
+
}
|
|
57
72
|
}
|
|
58
|
-
|
|
59
|
-
return
|
|
73
|
+
catch (error) {
|
|
74
|
+
// Connection closed during test cleanup - return empty array
|
|
75
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
// Re-throw unexpected errors
|
|
79
|
+
throw error;
|
|
60
80
|
}
|
|
61
81
|
}
|
|
62
82
|
},
|
|
@@ -99,8 +119,18 @@ const zsetModule = (context) => ({
|
|
|
99
119
|
return Promise.resolve(null);
|
|
100
120
|
}
|
|
101
121
|
else {
|
|
102
|
-
|
|
103
|
-
|
|
122
|
+
try {
|
|
123
|
+
const res = await context.pgClient.query(sql, params);
|
|
124
|
+
return res.rows.length ? parseFloat(res.rows[0].score) : null;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
// Connection closed during test cleanup - return null
|
|
128
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
// Re-throw unexpected errors
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
104
134
|
}
|
|
105
135
|
},
|
|
106
136
|
_zscore(key, member) {
|
|
@@ -122,8 +152,18 @@ const zsetModule = (context) => ({
|
|
|
122
152
|
return Promise.resolve([]);
|
|
123
153
|
}
|
|
124
154
|
else {
|
|
125
|
-
|
|
126
|
-
|
|
155
|
+
try {
|
|
156
|
+
const res = await context.pgClient.query(sql, params);
|
|
157
|
+
return res.rows.map((row) => row.member);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
// Connection closed during test cleanup - return empty array
|
|
161
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
162
|
+
return [];
|
|
163
|
+
}
|
|
164
|
+
// Re-throw unexpected errors
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
127
167
|
}
|
|
128
168
|
},
|
|
129
169
|
_zrangebyscore(key, min, max) {
|
|
@@ -143,8 +183,18 @@ const zsetModule = (context) => ({
|
|
|
143
183
|
return Promise.resolve([]);
|
|
144
184
|
}
|
|
145
185
|
else {
|
|
146
|
-
|
|
147
|
-
|
|
186
|
+
try {
|
|
187
|
+
const res = await context.pgClient.query(sql, params);
|
|
188
|
+
return res.rows.map((row) => ({ member: row.member, score: row.score }));
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
// Connection closed during test cleanup - return empty array
|
|
192
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
// Re-throw unexpected errors
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
148
198
|
}
|
|
149
199
|
},
|
|
150
200
|
_zrangebyscore_withscores(key, min, max) {
|
|
@@ -164,8 +214,18 @@ const zsetModule = (context) => ({
|
|
|
164
214
|
return Promise.resolve(0);
|
|
165
215
|
}
|
|
166
216
|
else {
|
|
167
|
-
|
|
168
|
-
|
|
217
|
+
try {
|
|
218
|
+
const res = await context.pgClient.query(sql, params);
|
|
219
|
+
return Number(res.rows[0]?.count || 0);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
// Connection closed during test cleanup - return 0
|
|
223
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
224
|
+
return 0;
|
|
225
|
+
}
|
|
226
|
+
// Re-throw unexpected errors
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
169
229
|
}
|
|
170
230
|
},
|
|
171
231
|
_zrem(key, member) {
|
|
@@ -188,12 +248,22 @@ const zsetModule = (context) => ({
|
|
|
188
248
|
return Promise.resolve(null);
|
|
189
249
|
}
|
|
190
250
|
else {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
? parseInt(res.rows[0].rank, 10)
|
|
195
|
-
|
|
196
|
-
|
|
251
|
+
try {
|
|
252
|
+
const res = await context.pgClient.query(sql, params);
|
|
253
|
+
return res.rows[0]?.rank
|
|
254
|
+
? parseInt(res.rows[0].rank, 10) > 0
|
|
255
|
+
? parseInt(res.rows[0].rank, 10) - 1
|
|
256
|
+
: null
|
|
257
|
+
: null;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// Connection closed during test cleanup - return null
|
|
261
|
+
if (error?.message?.includes('closed') || error?.message?.includes('queryable')) {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
// Re-throw unexpected errors
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
197
267
|
}
|
|
198
268
|
},
|
|
199
269
|
_zrank(key, member) {
|
|
@@ -3,7 +3,7 @@ import { ILogger } from '../../../logger';
|
|
|
3
3
|
import { ActivityType, Consumes } from '../../../../types/activity';
|
|
4
4
|
import { AppVID } from '../../../../types/app';
|
|
5
5
|
import { HookRule, HookSignal } from '../../../../types/hook';
|
|
6
|
-
import { HotMeshApp, HotMeshApps, HotMeshSettings } from '../../../../types/hotmesh';
|
|
6
|
+
import { HotMeshApp, HotMeshApps, HotMeshSettings, ScoutType } from '../../../../types/hotmesh';
|
|
7
7
|
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
|
|
8
8
|
import { SymbolSets, StringStringType, StringAnyType, Symbols } from '../../../../types/serializer';
|
|
9
9
|
import { IdsData, JobStatsRange, StatsType } from '../../../../types/stats';
|
|
@@ -38,8 +38,8 @@ declare class PostgresStoreService extends StoreService<ProviderClient, Provider
|
|
|
38
38
|
* check for and process work items in the
|
|
39
39
|
* time and signal task queues.
|
|
40
40
|
*/
|
|
41
|
-
reserveScoutRole(scoutType:
|
|
42
|
-
releaseScoutRole(scoutType:
|
|
41
|
+
reserveScoutRole(scoutType: ScoutType, delay?: number): Promise<boolean>;
|
|
42
|
+
releaseScoutRole(scoutType: ScoutType): Promise<boolean>;
|
|
43
43
|
getSettings(bCreate?: boolean): Promise<HotMeshSettings>;
|
|
44
44
|
setSettings(manifest: HotMeshSettings): Promise<any>;
|
|
45
45
|
reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
|
+
import { ILogger } from '../../../logger';
|
|
3
|
+
import { ActivityType, Consumes } from '../../../../types/activity';
|
|
4
|
+
import { AppVID } from '../../../../types/app';
|
|
5
|
+
import { HookRule, HookSignal } from '../../../../types/hook';
|
|
6
|
+
import { HotMeshApp, HotMeshApps, HotMeshSettings, ScoutType } from '../../../../types/hotmesh';
|
|
7
|
+
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
|
|
8
|
+
import { SymbolSets, StringStringType, StringAnyType, Symbols } from '../../../../types/serializer';
|
|
9
|
+
import { IdsData, JobStatsRange, StatsType } from '../../../../types/stats';
|
|
10
|
+
import { Transitions } from '../../../../types/transition';
|
|
11
|
+
import { JobInterruptOptions } from '../../../../types/job';
|
|
12
|
+
import { WorkListTaskType } from '../../../../types/task';
|
|
13
|
+
import { ThrottleOptions } from '../../../../types/quorum';
|
|
14
|
+
import { StoreService } from '../..';
|
|
15
|
+
declare abstract class RedisStoreBase<ClientProvider extends ProviderClient, TransactionProvider extends ProviderTransaction> extends StoreService<ClientProvider, TransactionProvider> {
|
|
16
|
+
commands: Record<string, string>;
|
|
17
|
+
abstract transact(): TransactionProvider;
|
|
18
|
+
abstract exec(...args: any[]): Promise<any>;
|
|
19
|
+
abstract setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
20
|
+
constructor(storeClient: ClientProvider);
|
|
21
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<HotMeshApps>;
|
|
22
|
+
isSuccessful(result: any): boolean;
|
|
23
|
+
delistSignalKey(key: string, target: string): Promise<void>;
|
|
24
|
+
zAdd(key: string, score: number | string, value: string | number, redisMulti?: TransactionProvider): Promise<any>;
|
|
25
|
+
zRangeByScore(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
26
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
27
|
+
invalidateCache(): void;
|
|
28
|
+
/**
|
|
29
|
+
* At any given time only a single engine will
|
|
30
|
+
* check for and process work items in the
|
|
31
|
+
* time and signal task queues.
|
|
32
|
+
*/
|
|
33
|
+
reserveScoutRole(scoutType: ScoutType, delay?: number): Promise<boolean>;
|
|
34
|
+
releaseScoutRole(scoutType: ScoutType): Promise<boolean>;
|
|
35
|
+
getSettings(bCreate?: boolean): Promise<HotMeshSettings>;
|
|
36
|
+
setSettings(manifest: HotMeshSettings): Promise<any>;
|
|
37
|
+
reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>;
|
|
38
|
+
getAllSymbols(): Promise<Symbols>;
|
|
39
|
+
getSymbols(activityId: string): Promise<Symbols>;
|
|
40
|
+
addSymbols(activityId: string, symbols: Symbols): Promise<boolean>;
|
|
41
|
+
seedSymbols(target: string, type: 'JOB' | 'ACTIVITY', startIndex: number): StringStringType;
|
|
42
|
+
seedJobSymbols(startIndex: number): StringStringType;
|
|
43
|
+
seedActivitySymbols(startIndex: number, activityId: string): StringStringType;
|
|
44
|
+
getSymbolValues(): Promise<Symbols>;
|
|
45
|
+
addSymbolValues(symvals: Symbols): Promise<boolean>;
|
|
46
|
+
getSymbolKeys(symbolNames: string[]): Promise<SymbolSets>;
|
|
47
|
+
getApp(id: string, refresh?: boolean): Promise<HotMeshApp>;
|
|
48
|
+
setApp(id: string, version: string): Promise<HotMeshApp>;
|
|
49
|
+
activateAppVersion(id: string, version: string): Promise<boolean>;
|
|
50
|
+
registerAppVersion(appId: string, version: string): Promise<any>;
|
|
51
|
+
setStats(jobKey: string, jobId: string, dateTime: string, stats: StatsType, appVersion: AppVID, transaction?: TransactionProvider): Promise<any>;
|
|
52
|
+
hGetAllResult(result: any): any;
|
|
53
|
+
getJobStats(jobKeys: string[]): Promise<JobStatsRange>;
|
|
54
|
+
getJobIds(indexKeys: string[], idRange: [number, number]): Promise<IdsData>;
|
|
55
|
+
setStatus(collationKeyStatus: number, jobId: string, appId: string, transaction?: TransactionProvider): Promise<any>;
|
|
56
|
+
getStatus(jobId: string, appId: string): Promise<number>;
|
|
57
|
+
setState({ ...state }: StringAnyType, status: number | null, jobId: string, symbolNames: string[], dIds: StringStringType, transaction?: TransactionProvider): Promise<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Returns custom search fields and values.
|
|
60
|
+
* NOTE: The `fields` param should NOT prefix items with an underscore.
|
|
61
|
+
* NOTE: Literals are allowed if quoted.
|
|
62
|
+
*/
|
|
63
|
+
getQueryState(jobId: string, fields: string[]): Promise<StringAnyType>;
|
|
64
|
+
getState(jobId: string, consumes: Consumes, dIds: StringStringType): Promise<[StringAnyType, number] | undefined>;
|
|
65
|
+
getRaw(jobId: string): Promise<StringStringType>;
|
|
66
|
+
/**
|
|
67
|
+
* collate is a generic method for incrementing a value in a hash
|
|
68
|
+
* in order to track their progress during processing.
|
|
69
|
+
*/
|
|
70
|
+
collate(jobId: string, activityId: string, amount: number, dIds: StringStringType, transaction?: TransactionProvider): Promise<number>;
|
|
71
|
+
/**
|
|
72
|
+
* Synthentic collation affects those activities in the graph
|
|
73
|
+
* that represent the synthetic DAG that was materialized during compilation;
|
|
74
|
+
* Synthetic collation distinguishes `re-entry due to failure` from
|
|
75
|
+
* `purposeful re-entry`.
|
|
76
|
+
*/
|
|
77
|
+
collateSynthetic(jobId: string, guid: string, amount: number, transaction?: TransactionProvider): Promise<number>;
|
|
78
|
+
setStateNX(jobId: string, appId: string, status?: number, entity?: string): Promise<boolean>;
|
|
79
|
+
getSchema(activityId: string, appVersion: AppVID): Promise<ActivityType>;
|
|
80
|
+
getSchemas(appVersion: AppVID): Promise<Record<string, ActivityType>>;
|
|
81
|
+
setSchemas(schemas: Record<string, ActivityType>, appVersion: AppVID): Promise<any>;
|
|
82
|
+
setSubscriptions(subscriptions: Record<string, any>, appVersion: AppVID): Promise<boolean>;
|
|
83
|
+
getSubscriptions(appVersion: AppVID): Promise<Record<string, string>>;
|
|
84
|
+
getSubscription(topic: string, appVersion: AppVID): Promise<string | undefined>;
|
|
85
|
+
setTransitions(transitions: Record<string, any>, appVersion: AppVID): Promise<any>;
|
|
86
|
+
getTransitions(appVersion: AppVID): Promise<Transitions>;
|
|
87
|
+
setHookRules(hookRules: Record<string, HookRule[]>): Promise<any>;
|
|
88
|
+
getHookRules(): Promise<Record<string, HookRule[]>>;
|
|
89
|
+
setHookSignal(hook: HookSignal, transaction?: TransactionProvider): Promise<any>;
|
|
90
|
+
getHookSignal(topic: string, resolved: string): Promise<string | undefined>;
|
|
91
|
+
deleteHookSignal(topic: string, resolved: string): Promise<number | undefined>;
|
|
92
|
+
addTaskQueues(keys: string[]): Promise<void>;
|
|
93
|
+
getActiveTaskQueue(): Promise<string | null>;
|
|
94
|
+
deleteProcessedTaskQueue(workItemKey: string, key: string, processedKey: string, scrub?: boolean): Promise<void>;
|
|
95
|
+
processTaskQueue(sourceKey: string, destinationKey: string): Promise<any>;
|
|
96
|
+
expireJob(jobId: string, inSeconds: number, redisMulti?: TransactionProvider): Promise<void>;
|
|
97
|
+
getDependencies(jobId: string): Promise<string[]>;
|
|
98
|
+
/**
|
|
99
|
+
* registers a hook activity to be awakened (uses ZSET to
|
|
100
|
+
* store the 'sleep group' and LIST to store the events
|
|
101
|
+
* for the given sleep group. Sleep groups are
|
|
102
|
+
* organized into 'n'-second blocks (LISTS))
|
|
103
|
+
*/
|
|
104
|
+
registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, deletionTime: number, dad: string, transaction?: TransactionProvider): Promise<void>;
|
|
105
|
+
getNextTask(listKey?: string): Promise<[
|
|
106
|
+
listKey: string,
|
|
107
|
+
jobId: string,
|
|
108
|
+
gId: string,
|
|
109
|
+
activityId: string,
|
|
110
|
+
type: WorkListTaskType
|
|
111
|
+
] | boolean>;
|
|
112
|
+
/**
|
|
113
|
+
* when processing time jobs, the target LIST ID returned
|
|
114
|
+
* from the ZSET query can be prefixed to denote what to
|
|
115
|
+
* do with the work list. (not everything is known in advance,
|
|
116
|
+
* so the ZSET key defines HOW to approach the work in the
|
|
117
|
+
* generic LIST (lists typically contain target job ids)
|
|
118
|
+
* @param {string} listKey - composite key
|
|
119
|
+
*/
|
|
120
|
+
resolveTaskKeyContext(listKey: string): [WorkListTaskType, string];
|
|
121
|
+
/**
|
|
122
|
+
* Interrupts a job and sets sets a job error (410), if 'throw'!=false.
|
|
123
|
+
* This method is called by the engine and not by an activity and is
|
|
124
|
+
* followed by a call to execute job completion/cleanup tasks
|
|
125
|
+
* associated with a job completion event.
|
|
126
|
+
*
|
|
127
|
+
* Todo: move most of this logic to the engine (too much logic for the store)
|
|
128
|
+
*/
|
|
129
|
+
interrupt(topic: string, jobId: string, options?: JobInterruptOptions): Promise<void>;
|
|
130
|
+
scrub(jobId: string): Promise<void>;
|
|
131
|
+
findJobs(queryString?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, string[]]>;
|
|
132
|
+
findJobFields(jobId: string, fieldMatchPattern?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, StringStringType]>;
|
|
133
|
+
setThrottleRate(options: ThrottleOptions): Promise<void>;
|
|
134
|
+
getThrottleRates(): Promise<StringStringType>;
|
|
135
|
+
getThrottleRate(topic: string): Promise<number>;
|
|
136
|
+
}
|
|
137
|
+
export { RedisStoreBase };
|