@dbos-inc/kafkajs-receive 3.0.17-preview → 3.0.19-preview
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 +3 -12
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/index.ts +9 -8
- package/package.json +1 -1
- package/tests/kafkajs.test.ts +14 -9
package/README.md
CHANGED
|
@@ -44,10 +44,7 @@ class KafkaExample {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(
|
|
48
|
-
KafkaExample.registeredConsumerWorkflow,
|
|
49
|
-
'registeredConsumerWorkflow',
|
|
50
|
-
);
|
|
47
|
+
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(KafkaExample.registeredConsumerWorkflow);
|
|
51
48
|
kafkaReceiver.registerConsumer(KafkaExample.registeredConsumerWorkflow, 'another-example-topic');
|
|
52
49
|
```
|
|
53
50
|
|
|
@@ -78,10 +75,7 @@ class KafkaExample {
|
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
77
|
|
|
81
|
-
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(
|
|
82
|
-
KafkaExample.registeredConsumerWorkflow,
|
|
83
|
-
'registeredConsumerWorkflow',
|
|
84
|
-
);
|
|
78
|
+
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(KafkaExample.registeredConsumerWorkflow);
|
|
85
79
|
kafkaReceiver.registerConsumer(KafkaExample.registeredConsumerWorkflow, 'another-example-topic', {
|
|
86
80
|
config: { groupId: 'custom-group-id' },
|
|
87
81
|
});
|
|
@@ -105,10 +99,7 @@ class KafkaExample {
|
|
|
105
99
|
}
|
|
106
100
|
}
|
|
107
101
|
|
|
108
|
-
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(
|
|
109
|
-
KafkaExample.registeredConsumerWorkflow,
|
|
110
|
-
'registeredConsumerWorkflow',
|
|
111
|
-
);
|
|
102
|
+
KafkaExample.registeredConsumerWorkflow = DBOS.registerWorkflow(KafkaExample.registeredConsumerWorkflow);
|
|
112
103
|
kafkaReceiver.registerConsumer(KafkaExample.registeredConsumerWorkflow, 'another-example-topic', {
|
|
113
104
|
queueName: 'example-queue',
|
|
114
105
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DBOSLifecycleCallback } from '@dbos-inc/dbos-sdk';
|
|
2
2
|
import { ConsumerConfig, KafkaConfig, KafkaMessage } from 'kafkajs';
|
|
3
|
+
export type KafkaArgs = [string, number, KafkaMessage];
|
|
3
4
|
interface KafkaRetryConfig {
|
|
4
5
|
maxRetries: number;
|
|
5
6
|
retryTime: number;
|
|
@@ -14,8 +15,8 @@ export declare class KafkaReceiver extends DBOSLifecycleCallback {
|
|
|
14
15
|
initialize(): Promise<void>;
|
|
15
16
|
destroy(): Promise<void>;
|
|
16
17
|
logRegisteredEndpoints(): void;
|
|
17
|
-
registerConsumer<This,
|
|
18
|
-
|
|
18
|
+
registerConsumer<This, Return>(func: (this: This, ...args: KafkaArgs) => Promise<Return>, topics: ConsumerTopics, options?: {
|
|
19
|
+
ctorOrProto?: object;
|
|
19
20
|
className?: string;
|
|
20
21
|
name?: string;
|
|
21
22
|
queueName?: string;
|
|
@@ -24,7 +25,7 @@ export declare class KafkaReceiver extends DBOSLifecycleCallback {
|
|
|
24
25
|
consumer(topics: ConsumerTopics, options?: {
|
|
25
26
|
queueName?: string;
|
|
26
27
|
config?: ConsumerConfig;
|
|
27
|
-
}): <This,
|
|
28
|
+
}): <This, Return>(target: object, propertyKey: PropertyKey, descriptor: TypedPropertyDescriptor<(this: This, ...args: KafkaArgs) => Promise<Return>>) => TypedPropertyDescriptor<(this: This, args_0: string, args_1: number, args_2: KafkaMessage) => Promise<Return>>;
|
|
28
29
|
}
|
|
29
30
|
export {};
|
|
30
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAA8B,cAAc,EAAE,WAAW,EAAE,YAAY,EAAwB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAA8B,cAAc,EAAE,WAAW,EAAE,YAAY,EAAwB,MAAM,SAAS,CAAC;AAEtH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAWvD,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAEtE,qBAAa,aAAc,SAAQ,qBAAqB;;IAIpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,MAAM,EAAE,WAAW,EACnB,WAAW,GAAE,gBAAmE;IAMpF,UAAU;IA0DV,OAAO;IAKb,sBAAsB;IAa/B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,EACzD,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,cAAc,CAAC;KACpB;IAcR,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,cAAc,CAAA;KAAO,0BAIlF,MAAM,eACD,WAAW,cACZ,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,SAAS,KAAK,QAAQ,MAAM,CAAC,CAAC,oCAA7C,IAAI,2DAAyB,QAAQ,MAAM,CAAC;CAc5F"}
|
package/dist/index.js
CHANGED
|
@@ -92,7 +92,7 @@ class KafkaReceiver extends dbos_sdk_1.DBOSLifecycleCallback {
|
|
|
92
92
|
}
|
|
93
93
|
registerConsumer(func, topics, options = {}) {
|
|
94
94
|
const { regInfo } = dbos_sdk_1.DBOS.associateFunctionWithInfo(this, func, {
|
|
95
|
-
|
|
95
|
+
ctorOrProto: options.ctorOrProto,
|
|
96
96
|
className: options.className,
|
|
97
97
|
name: options.name ?? func.name,
|
|
98
98
|
});
|
|
@@ -107,7 +107,7 @@ class KafkaReceiver extends dbos_sdk_1.DBOSLifecycleCallback {
|
|
|
107
107
|
function methodDecorator(target, propertyKey, descriptor) {
|
|
108
108
|
if (descriptor.value) {
|
|
109
109
|
$this.registerConsumer(descriptor.value, topics, {
|
|
110
|
-
|
|
110
|
+
ctorOrProto: target,
|
|
111
111
|
name: String(propertyKey),
|
|
112
112
|
queueName: options.queueName,
|
|
113
113
|
config: options.config,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,iDAAiE;AACjE,qCAAsH;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DBOS, DBOSLifecycleCallback } from '@dbos-inc/dbos-sdk';
|
|
2
2
|
import { Kafka as KafkaJS, Consumer, ConsumerConfig, KafkaConfig, KafkaMessage, KafkaJSProtocolError } from 'kafkajs';
|
|
3
3
|
|
|
4
|
-
type
|
|
4
|
+
export type KafkaArgs = [string, number, KafkaMessage];
|
|
5
|
+
type KafkaMessageHandler<Return> = (...args: KafkaArgs) => Promise<Return>;
|
|
5
6
|
|
|
6
7
|
const sleepms = (ms: number) => new Promise((r) => setTimeout(r, ms));
|
|
7
8
|
|
|
@@ -114,11 +115,11 @@ export class KafkaReceiver extends DBOSLifecycleCallback {
|
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
|
|
117
|
-
registerConsumer<This,
|
|
118
|
-
func: (this: This, ...args:
|
|
118
|
+
registerConsumer<This, Return>(
|
|
119
|
+
func: (this: This, ...args: KafkaArgs) => Promise<Return>,
|
|
119
120
|
topics: ConsumerTopics,
|
|
120
121
|
options: {
|
|
121
|
-
|
|
122
|
+
ctorOrProto?: object;
|
|
122
123
|
className?: string;
|
|
123
124
|
name?: string;
|
|
124
125
|
queueName?: string;
|
|
@@ -126,7 +127,7 @@ export class KafkaReceiver extends DBOSLifecycleCallback {
|
|
|
126
127
|
} = {},
|
|
127
128
|
) {
|
|
128
129
|
const { regInfo } = DBOS.associateFunctionWithInfo(this, func, {
|
|
129
|
-
|
|
130
|
+
ctorOrProto: options.ctorOrProto,
|
|
130
131
|
className: options.className,
|
|
131
132
|
name: options.name ?? func.name,
|
|
132
133
|
});
|
|
@@ -140,14 +141,14 @@ export class KafkaReceiver extends DBOSLifecycleCallback {
|
|
|
140
141
|
consumer(topics: ConsumerTopics, options: { queueName?: string; config?: ConsumerConfig } = {}) {
|
|
141
142
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
142
143
|
const $this = this;
|
|
143
|
-
function methodDecorator<This,
|
|
144
|
+
function methodDecorator<This, Return>(
|
|
144
145
|
target: object,
|
|
145
146
|
propertyKey: PropertyKey,
|
|
146
|
-
descriptor: TypedPropertyDescriptor<(this: This, ...args:
|
|
147
|
+
descriptor: TypedPropertyDescriptor<(this: This, ...args: KafkaArgs) => Promise<Return>>,
|
|
147
148
|
) {
|
|
148
149
|
if (descriptor.value) {
|
|
149
150
|
$this.registerConsumer(descriptor.value, topics, {
|
|
150
|
-
|
|
151
|
+
ctorOrProto: target,
|
|
151
152
|
name: String(propertyKey),
|
|
152
153
|
queueName: options.queueName,
|
|
153
154
|
config: options.config,
|
package/package.json
CHANGED
package/tests/kafkajs.test.ts
CHANGED
|
@@ -19,7 +19,7 @@ const kafkaConfig = {
|
|
|
19
19
|
const kafkaReceiver = new KafkaReceiver(kafkaConfig);
|
|
20
20
|
|
|
21
21
|
interface KafkaEvents {
|
|
22
|
-
message: (functionName: string, topic: string, partition: number, message: KafkaMessage) => void;
|
|
22
|
+
message: (functionName: string, topic: string, partition: number, message: KafkaMessage, workflowID?: string) => void;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
class KafkaEmitter extends EventEmitter {
|
|
@@ -37,6 +37,7 @@ type KafkaMessageEvent = {
|
|
|
37
37
|
topic: string;
|
|
38
38
|
partition: number;
|
|
39
39
|
message: KafkaMessage;
|
|
40
|
+
workflowID?: string;
|
|
40
41
|
};
|
|
41
42
|
|
|
42
43
|
function waitForMessage(
|
|
@@ -47,10 +48,10 @@ function waitForMessage(
|
|
|
47
48
|
): Promise<KafkaMessageEvent> {
|
|
48
49
|
return withTimeout(
|
|
49
50
|
new Promise<KafkaMessageEvent>((resolve) => {
|
|
50
|
-
const handler = (f: string, t: string, partition: number, message: KafkaMessage) => {
|
|
51
|
+
const handler = (f: string, t: string, partition: number, message: KafkaMessage, workflowID?: string) => {
|
|
51
52
|
if (f === funcName && t === topic) {
|
|
52
53
|
emitter.off('message', handler);
|
|
53
|
-
resolve({ topic: t, partition, message });
|
|
54
|
+
resolve({ topic: t, partition, message, workflowID });
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
57
|
emitter.on('message', handler);
|
|
@@ -67,37 +68,37 @@ class KafkaTestClass {
|
|
|
67
68
|
@DBOS.workflow()
|
|
68
69
|
static async stringTopic(topic: string, partition: number, message: KafkaMessage) {
|
|
69
70
|
await Promise.resolve();
|
|
70
|
-
KafkaTestClass.emitter.emit('message', 'stringTopic', topic, partition, message);
|
|
71
|
+
KafkaTestClass.emitter.emit('message', 'stringTopic', topic, partition, message, DBOS.workflowID);
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
@kafkaReceiver.consumer(/regex-topic-.*/i)
|
|
74
75
|
@DBOS.workflow()
|
|
75
76
|
static async regexTopic(topic: string, partition: number, message: KafkaMessage) {
|
|
76
77
|
await Promise.resolve();
|
|
77
|
-
KafkaTestClass.emitter.emit('message', 'regexTopic', topic, partition, message);
|
|
78
|
+
KafkaTestClass.emitter.emit('message', 'regexTopic', topic, partition, message, DBOS.workflowID);
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
@kafkaReceiver.consumer(['a-topic', 'b-topic'])
|
|
81
82
|
@DBOS.workflow()
|
|
82
83
|
static async stringArrayTopic(topic: string, partition: number, message: KafkaMessage) {
|
|
83
84
|
await Promise.resolve();
|
|
84
|
-
KafkaTestClass.emitter.emit('message', 'stringArrayTopic', topic, partition, message);
|
|
85
|
+
KafkaTestClass.emitter.emit('message', 'stringArrayTopic', topic, partition, message, DBOS.workflowID);
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
@kafkaReceiver.consumer([/z-topic-.*/i, /y-topic-.*/i])
|
|
88
89
|
@DBOS.workflow()
|
|
89
90
|
static async regexArrayTopic(topic: string, partition: number, message: KafkaMessage) {
|
|
90
91
|
await Promise.resolve();
|
|
91
|
-
KafkaTestClass.emitter.emit('message', 'regexArrayTopic', topic, partition, message);
|
|
92
|
+
KafkaTestClass.emitter.emit('message', 'regexArrayTopic', topic, partition, message, DBOS.workflowID);
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
static async registeredConsumer(topic: string, partition: number, message: KafkaMessage) {
|
|
95
96
|
await Promise.resolve();
|
|
96
|
-
KafkaTestClass.emitter.emit('message', 'registeredConsumer', topic, partition, message);
|
|
97
|
+
KafkaTestClass.emitter.emit('message', 'registeredConsumer', topic, partition, message, DBOS.workflowID);
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
KafkaTestClass.registeredConsumer = DBOS.registerWorkflow(KafkaTestClass.registeredConsumer
|
|
101
|
+
KafkaTestClass.registeredConsumer = DBOS.registerWorkflow(KafkaTestClass.registeredConsumer);
|
|
101
102
|
kafkaReceiver.registerConsumer(KafkaTestClass.registeredConsumer, 'registered-topic');
|
|
102
103
|
|
|
103
104
|
async function validateKafka(config: KafkaConfig) {
|
|
@@ -209,6 +210,10 @@ suite('kafkajs-receive', async () => {
|
|
|
209
210
|
|
|
210
211
|
assert.equal(topic, result.topic);
|
|
211
212
|
assert.equal(message, String(result.message.value));
|
|
213
|
+
assert(!!result.workflowID);
|
|
214
|
+
|
|
215
|
+
const status = await DBOS.getWorkflowStatus(result.workflowID);
|
|
216
|
+
assert(!!status);
|
|
212
217
|
});
|
|
213
218
|
}
|
|
214
219
|
});
|