@cryptexlabs/codex-nodejs-common 0.10.0 → 0.10.2
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/lib/package.json +1 -1
- package/lib/src/service/kafka/kafka-service.interface.d.ts +11 -3
- package/lib/src/service/kafka/kafka.service.d.ts +7 -5
- package/lib/src/service/kafka/kafka.service.js +3 -3
- package/lib/src/service/kafka/kafka.service.js.map +1 -1
- package/lib/src/service/kafka/kafka.stub.service.d.ts +12 -1
- package/lib/src/service/kafka/kafka.stub.service.js +11 -1
- package/lib/src/service/kafka/kafka.stub.service.js.map +1 -1
- package/package.json +1 -1
- package/src/service/kafka/kafka-service.interface.ts +26 -3
- package/src/service/kafka/kafka.service.ts +13 -6
- package/src/service/kafka/kafka.stub.service.ts +30 -2
package/lib/package.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Message } from "kafkajs";
|
|
2
2
|
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
3
3
|
export interface KafkaServiceInterface {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
stopConsumer(): Promise<void>;
|
|
5
|
+
connect(): Promise<void>;
|
|
6
|
+
disconnect(): Promise<void>;
|
|
7
|
+
initializeConsumer(consumerGroup: string, config?: any): Promise<void>;
|
|
8
|
+
initializeProducer(): Promise<void>;
|
|
9
|
+
startConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>, err?: (error: string) => Promise<void>): Promise<void>;
|
|
10
|
+
startManualConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>): Promise<void>;
|
|
11
|
+
publish(topic: string, payload: MessageInterface<any>): Promise<void>;
|
|
12
|
+
publishBulk(topic: string, payloads: any[]): Promise<void>;
|
|
13
|
+
ensureTopicsExist(topics: (string | RegExp)[]): Promise<void>;
|
|
6
14
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { LoggerService } from "@nestjs/common";
|
|
2
|
-
import { Message } from "kafkajs";
|
|
2
|
+
import { ConsumerConfig, Message } from "kafkajs";
|
|
3
3
|
import { DefaultConfig } from "../../config";
|
|
4
4
|
import { ConsumerServiceDelegateInterface } from "../consumer";
|
|
5
|
-
|
|
5
|
+
import { KafkaServiceInterface } from "./kafka-service.interface";
|
|
6
|
+
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
7
|
+
export declare class KafkaService implements KafkaServiceInterface, ConsumerServiceDelegateInterface {
|
|
6
8
|
private readonly config;
|
|
7
9
|
private readonly logger;
|
|
8
10
|
private _kafka;
|
|
@@ -13,12 +15,12 @@ export declare class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
13
15
|
stopConsumer(): Promise<void>;
|
|
14
16
|
connect(): Promise<void>;
|
|
15
17
|
disconnect(): Promise<void>;
|
|
16
|
-
initializeConsumer(consumerGroup: string, config?:
|
|
18
|
+
initializeConsumer(consumerGroup: string, config?: ConsumerConfig): Promise<void>;
|
|
17
19
|
initializeProducer(): Promise<void>;
|
|
18
20
|
startConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>, err?: (error: string) => Promise<void>): Promise<void>;
|
|
19
21
|
startManualConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>): Promise<void>;
|
|
20
|
-
|
|
21
|
-
publish(topic: string, payload: any): Promise<void>;
|
|
22
|
+
ensureTopicsExist(topics: (string | RegExp)[]): Promise<void>;
|
|
23
|
+
publish(topic: string, payload: MessageInterface<any>): Promise<void>;
|
|
22
24
|
publishBulk(topic: string, payloads: any[]): Promise<void>;
|
|
23
25
|
private _setManualConsume;
|
|
24
26
|
}
|
|
@@ -73,7 +73,7 @@ let KafkaService = class KafkaService {
|
|
|
73
73
|
catch (e) {
|
|
74
74
|
this.logger.error(e.message, e.trace);
|
|
75
75
|
}
|
|
76
|
-
await this.
|
|
76
|
+
await this.ensureTopicsExist(topics);
|
|
77
77
|
await this._kafkaConsumer.run({
|
|
78
78
|
autoCommit: true,
|
|
79
79
|
eachMessage: async ({ topic, partition, message }) => {
|
|
@@ -106,7 +106,7 @@ let KafkaService = class KafkaService {
|
|
|
106
106
|
}
|
|
107
107
|
try {
|
|
108
108
|
await Promise.all(promises);
|
|
109
|
-
await this.
|
|
109
|
+
await this.ensureTopicsExist(topics);
|
|
110
110
|
const results = [
|
|
111
111
|
this._kafkaConsumer.run({
|
|
112
112
|
eachMessage: async (messagePayload) => {
|
|
@@ -121,7 +121,7 @@ let KafkaService = class KafkaService {
|
|
|
121
121
|
this.logger.error(e.message, e.trace);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
async
|
|
124
|
+
async ensureTopicsExist(topics) {
|
|
125
125
|
const stringTopics = [];
|
|
126
126
|
for (const topic of topics) {
|
|
127
127
|
if (typeof topic === "string") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka.service.js","sourceRoot":"","sources":["../../../../src/service/kafka/kafka.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"kafka.service.js","sourceRoot":"","sources":["../../../../src/service/kafka/kafka.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAUiB;AACjB,yCAA6C;AAE7C,iDAA6C;AAKtC,IAAM,YAAY,GAAlB,MAAM,YAAY;IAOvB,YACqC,MAAqB,EACrB,MAAqB,EACxD,cAAmB,EAAE;QAFc,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAe;QAGxD,MAAM,iBAAiB,mBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAChC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,SAAS,IACX,WAAW,CACf,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,iBAAiB,CAAC,IAAI,GAAG;gBACvB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAmB;gBACpE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;aAChC,CAAC;YACF,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,GAAG,IAAI,eAAK,iCAClB,iBAAiB,KACpB,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC,IACD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,aAAqB,EACrB,SAAyB,EAAoB;QAE7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,iBACxC,OAAO,EAAE,aAAa,IACnB,MAAM,EACT,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,MAA2B,EAC3B,QAA4D,EAC5D,GAAsC;QAEtC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAC5B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;gBACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBACd,KAAK;oBACL,SAAS;oBACT,OAAO,EAAE;wBACP,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;qBAChC;iBACF,CAAC,CAAC;gBACH,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;;YACvE,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,KAAK,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC9B,MAA2B,EAC3B,QAA4D;QAE5D,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAErC,MAAM,OAAO,GAAG;gBACd,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBACtB,WAAW,EAAE,KAAK,EAAE,cAAkC,EAAE,EAAE;wBACxD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;wBACrD,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACjC,CAAC;iBACF,CAAC;aACH,CAAC;YACF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,MAA2B;QACxD,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAmB,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAiB;oBAChC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB;oBAClD,KAAK;iBACN,CAAC;gBACF,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;gBAClC,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAGM,KAAK,CAAC,OAAO,CAClB,KAAa,EACb,OAA8B;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,aAAa,KAAK,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC7B,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,QAAe;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC7B,KAAK;YACL,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAoB7B,IAAI,uBAAuB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,EAAE,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EACrC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;YAErC,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAC/D,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE;gBAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;oBAChE,MAAM,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC;gBAC1C,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,EACD,EAAE,CACH,CAAC;QACJ,CAAC,CACF,CAAC;QAYF,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACxE,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;QAMH,IAAI,CAAC,cAAc,CAAC,EAAE,CACpB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAC5C,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YAEhD,uBAAuB,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,GAAG,SAAS,KAAK,GAAG,CAAC;YAErE,IACE,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxD,OAAO,CAAC,QAAQ,CAAC,CAClB,EACD,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC,CACF,CAAC;QAGF,MAAM,UAAU,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEvE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC5B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC1B,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA3TY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAA;IAChB,WAAA,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAA;qCAD0B,sBAAa;GAR/C,YAAY,CA2TxB"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { LoggerService } from "@nestjs/common";
|
|
2
2
|
import { KafkaServiceInterface } from "./kafka-service.interface";
|
|
3
3
|
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
4
|
+
import { Message } from "kafkajs";
|
|
4
5
|
export declare class KafkaStubService implements KafkaServiceInterface {
|
|
5
|
-
|
|
6
|
+
connect(): Promise<void>;
|
|
7
|
+
disconnect(): Promise<void>;
|
|
8
|
+
initializeConsumer(consumerGroup: string, config?: {}): Promise<void>;
|
|
9
|
+
initializeProducer(): Promise<void>;
|
|
10
|
+
publish(topic: string, payload: any): Promise<void>;
|
|
11
|
+
publishBulk(topic: string, payloads: any[]): Promise<void>;
|
|
6
12
|
send(payload: MessageInterface<any>, logger: LoggerService): Promise<any>;
|
|
13
|
+
startConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>, err?: (error: string) => Promise<void>): Promise<void>;
|
|
14
|
+
startManualConsumer(topics: (string | RegExp)[], callback: (topic: string, message: Message) => Promise<void>): Promise<void>;
|
|
15
|
+
startProducer(): Promise<any>;
|
|
16
|
+
stopConsumer(): Promise<void>;
|
|
17
|
+
ensureTopicsExist(topics: (string | RegExp)[]): Promise<void>;
|
|
7
18
|
}
|
|
@@ -9,8 +9,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.KafkaStubService = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
let KafkaStubService = class KafkaStubService {
|
|
12
|
-
async
|
|
12
|
+
async connect() { }
|
|
13
|
+
async disconnect() { }
|
|
14
|
+
async initializeConsumer(consumerGroup, config) { }
|
|
15
|
+
async initializeProducer() { }
|
|
16
|
+
async publish(topic, payload) { }
|
|
17
|
+
async publishBulk(topic, payloads) { }
|
|
13
18
|
async send(payload, logger) { }
|
|
19
|
+
async startConsumer(topics, callback, err) { }
|
|
20
|
+
async startManualConsumer(topics, callback) { }
|
|
21
|
+
async startProducer() { }
|
|
22
|
+
async stopConsumer() { }
|
|
23
|
+
async ensureTopicsExist(topics) { }
|
|
14
24
|
};
|
|
15
25
|
exports.KafkaStubService = KafkaStubService;
|
|
16
26
|
exports.KafkaStubService = KafkaStubService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka.stub.service.js","sourceRoot":"","sources":["../../../../src/service/kafka/kafka.stub.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2D;
|
|
1
|
+
{"version":3,"file":"kafka.stub.service.js","sourceRoot":"","sources":["../../../../src/service/kafka/kafka.stub.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2D;AAMpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,KAAK,CAAC,OAAO,KAAmB,CAAC;IAEjC,KAAK,CAAC,UAAU,KAAmB,CAAC;IAEpC,KAAK,CAAC,kBAAkB,CAAC,aAAqB,EAAE,MAAW,IAAkB,CAAC;IAE9E,KAAK,CAAC,kBAAkB,KAAmB,CAAC;IAE5C,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAY,IAAkB,CAAC;IAE5D,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,QAAe,IAAkB,CAAC;IAEnE,KAAK,CAAC,IAAI,CACR,OAA8B,EAC9B,MAAqB,IACN,CAAC;IAElB,KAAK,CAAC,aAAa,CACjB,MAA2B,EAC3B,QAA4D,EAC5D,GAAsC,IACtB,CAAC;IAEnB,KAAK,CAAC,mBAAmB,CACvB,MAA2B,EAC3B,QAA4D,IAC5C,CAAC;IAEnB,KAAK,CAAC,aAAa,KAAkB,CAAC;IAEtC,KAAK,CAAC,YAAY,KAAmB,CAAC;IAEtC,KAAK,CAAC,iBAAiB,CAAC,MAA2B,IAAkB,CAAC;CACvE,CAAA;AAlCY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAkC5B"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Message } from "kafkajs";
|
|
2
2
|
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
3
3
|
|
|
4
4
|
export interface KafkaServiceInterface {
|
|
5
|
-
|
|
5
|
+
stopConsumer(): Promise<void>;
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
connect(): Promise<void>;
|
|
8
|
+
|
|
9
|
+
disconnect(): Promise<void>;
|
|
10
|
+
|
|
11
|
+
initializeConsumer(consumerGroup: string, config?): Promise<void>;
|
|
12
|
+
|
|
13
|
+
initializeProducer(): Promise<void>;
|
|
14
|
+
|
|
15
|
+
startConsumer(
|
|
16
|
+
topics: (string | RegExp)[],
|
|
17
|
+
callback: (topic: string, message: Message) => Promise<void>,
|
|
18
|
+
err?: (error: string) => Promise<void>
|
|
19
|
+
): Promise<void>;
|
|
20
|
+
|
|
21
|
+
startManualConsumer(
|
|
22
|
+
topics: (string | RegExp)[],
|
|
23
|
+
callback: (topic: string, message: Message) => Promise<void>
|
|
24
|
+
): Promise<void>;
|
|
25
|
+
|
|
26
|
+
publish(topic: string, payload: MessageInterface<any>): Promise<void>;
|
|
27
|
+
|
|
28
|
+
publishBulk(topic: string, payloads: any[]): Promise<void>;
|
|
29
|
+
|
|
30
|
+
ensureTopicsExist(topics: (string | RegExp)[]): Promise<void>;
|
|
8
31
|
}
|
|
@@ -2,6 +2,7 @@ import { Inject, Injectable, LoggerService } from "@nestjs/common";
|
|
|
2
2
|
import {
|
|
3
3
|
Admin,
|
|
4
4
|
Consumer,
|
|
5
|
+
ConsumerConfig,
|
|
5
6
|
EachMessagePayload,
|
|
6
7
|
ITopicConfig,
|
|
7
8
|
Kafka,
|
|
@@ -12,9 +13,12 @@ import {
|
|
|
12
13
|
import { DefaultConfig } from "../../config";
|
|
13
14
|
import { ConsumerServiceDelegateInterface } from "../consumer";
|
|
14
15
|
import { KafkaLogger } from "./kafka.logger";
|
|
16
|
+
import { KafkaServiceInterface } from "./kafka-service.interface";
|
|
17
|
+
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
15
18
|
|
|
16
19
|
@Injectable()
|
|
17
|
-
export class KafkaService
|
|
20
|
+
export class KafkaService
|
|
21
|
+
implements KafkaServiceInterface, ConsumerServiceDelegateInterface {
|
|
18
22
|
private _kafka: Kafka;
|
|
19
23
|
private _kafkaConsumer: Consumer;
|
|
20
24
|
private _kafkaProducer: Producer;
|
|
@@ -78,7 +82,7 @@ export class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
78
82
|
|
|
79
83
|
public async initializeConsumer(
|
|
80
84
|
consumerGroup: string,
|
|
81
|
-
config = {}
|
|
85
|
+
config: ConsumerConfig = {} as ConsumerConfig
|
|
82
86
|
): Promise<void> {
|
|
83
87
|
this._kafkaConsumer = this._kafka.consumer({
|
|
84
88
|
groupId: consumerGroup,
|
|
@@ -107,7 +111,7 @@ export class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
107
111
|
this.logger.error(e.message, e.trace);
|
|
108
112
|
}
|
|
109
113
|
|
|
110
|
-
await this.
|
|
114
|
+
await this.ensureTopicsExist(topics);
|
|
111
115
|
await this._kafkaConsumer.run({
|
|
112
116
|
autoCommit: true,
|
|
113
117
|
eachMessage: async ({ topic, partition, message }) => {
|
|
@@ -148,7 +152,7 @@ export class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
148
152
|
try {
|
|
149
153
|
await Promise.all(promises);
|
|
150
154
|
|
|
151
|
-
await this.
|
|
155
|
+
await this.ensureTopicsExist(topics);
|
|
152
156
|
|
|
153
157
|
const results = [
|
|
154
158
|
this._kafkaConsumer.run({
|
|
@@ -164,7 +168,7 @@ export class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
164
168
|
}
|
|
165
169
|
}
|
|
166
170
|
|
|
167
|
-
|
|
171
|
+
public async ensureTopicsExist(topics: (string | RegExp)[]): Promise<void> {
|
|
168
172
|
const stringTopics = [];
|
|
169
173
|
for (const topic of topics) {
|
|
170
174
|
if (typeof topic === "string") {
|
|
@@ -193,7 +197,10 @@ export class KafkaService implements ConsumerServiceDelegateInterface {
|
|
|
193
197
|
}
|
|
194
198
|
|
|
195
199
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
196
|
-
public async publish(
|
|
200
|
+
public async publish(
|
|
201
|
+
topic: string,
|
|
202
|
+
payload: MessageInterface<any>
|
|
203
|
+
): Promise<void> {
|
|
197
204
|
const json = JSON.stringify(payload);
|
|
198
205
|
this.logger.debug(`Publishing kafka message: ${json} to topic ${topic}`);
|
|
199
206
|
await this._kafkaProducer.send({
|
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
import { Injectable, LoggerService } from "@nestjs/common";
|
|
2
2
|
import { KafkaServiceInterface } from "./kafka-service.interface";
|
|
3
3
|
import { MessageInterface } from "@cryptexlabs/codex-data-model";
|
|
4
|
+
import { Message } from "kafkajs";
|
|
4
5
|
|
|
5
6
|
@Injectable()
|
|
6
7
|
export class KafkaStubService implements KafkaServiceInterface {
|
|
7
|
-
|
|
8
|
+
async connect(): Promise<void> {}
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
async disconnect(): Promise<void> {}
|
|
11
|
+
|
|
12
|
+
async initializeConsumer(consumerGroup: string, config?: {}): Promise<void> {}
|
|
13
|
+
|
|
14
|
+
async initializeProducer(): Promise<void> {}
|
|
15
|
+
|
|
16
|
+
async publish(topic: string, payload: any): Promise<void> {}
|
|
17
|
+
|
|
18
|
+
async publishBulk(topic: string, payloads: any[]): Promise<void> {}
|
|
19
|
+
|
|
20
|
+
async send(
|
|
10
21
|
payload: MessageInterface<any>,
|
|
11
22
|
logger: LoggerService
|
|
12
23
|
): Promise<any> {}
|
|
24
|
+
|
|
25
|
+
async startConsumer(
|
|
26
|
+
topics: (string | RegExp)[],
|
|
27
|
+
callback: (topic: string, message: Message) => Promise<void>,
|
|
28
|
+
err?: (error: string) => Promise<void>
|
|
29
|
+
): Promise<void> {}
|
|
30
|
+
|
|
31
|
+
async startManualConsumer(
|
|
32
|
+
topics: (string | RegExp)[],
|
|
33
|
+
callback: (topic: string, message: Message) => Promise<void>
|
|
34
|
+
): Promise<void> {}
|
|
35
|
+
|
|
36
|
+
async startProducer(): Promise<any> {}
|
|
37
|
+
|
|
38
|
+
async stopConsumer(): Promise<void> {}
|
|
39
|
+
|
|
40
|
+
async ensureTopicsExist(topics: (string | RegExp)[]): Promise<void> {}
|
|
13
41
|
}
|