@nsshunt/stsappframework 2.19.274 → 2.19.275
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/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/kafka/kafkaconsumer.js +82 -0
- package/dist/kafka/kafkaconsumer.js.map +1 -0
- package/dist/{kafkamanager.js → kafka/kafkamanager.js} +9 -75
- package/dist/kafka/kafkamanager.js.map +1 -0
- package/dist/kafka/kafkaproducer.js +53 -0
- package/dist/kafka/kafkaproducer.js.map +1 -0
- package/dist/kafkatesting/consume.js +12 -11
- package/dist/kafkatesting/consume.js.map +1 -1
- package/dist/kafkatesting/produce.js +8 -7
- package/dist/kafkatesting/produce.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -1
- package/src/kafka/kafkaconsumer.ts +79 -0
- package/src/{kafkamanager.ts → kafka/kafkamanager.ts} +12 -78
- package/src/kafka/kafkaproducer.ts +54 -0
- package/src/kafkatesting/consume.ts +13 -11
- package/src/kafkatesting/produce.ts +9 -7
- package/types/index.d.ts +3 -1
- package/types/index.d.ts.map +1 -1
- package/types/kafka/kafkaconsumer.d.ts +12 -0
- package/types/kafka/kafkaconsumer.d.ts.map +1 -0
- package/types/kafka/kafkamanager.d.ts +16 -0
- package/types/kafka/kafkamanager.d.ts.map +1 -0
- package/types/kafka/kafkaproducer.d.ts +17 -0
- package/types/kafka/kafkaproducer.d.ts.map +1 -0
- package/dist/kafkamanager.js.map +0 -1
- package/types/kafkamanager.d.ts +0 -29
- package/types/kafkamanager.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -26,5 +26,7 @@ __exportStar(require("./workerprocessbase"), exports);
|
|
|
26
26
|
__exportStar(require("./socketIoServerHelper"), exports);
|
|
27
27
|
__exportStar(require("./stslatencycontroller"), exports);
|
|
28
28
|
__exportStar(require("./stslatencyroute"), exports);
|
|
29
|
-
__exportStar(require("./kafkamanager"), exports);
|
|
29
|
+
__exportStar(require("./kafka/kafkamanager"), exports);
|
|
30
|
+
__exportStar(require("./kafka/kafkaproducer"), exports);
|
|
31
|
+
__exportStar(require("./kafka/kafkaconsumer"), exports);
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,mDAAgC;AAChC,6CAA0B;AAC1B,kDAA+B;AAC/B,kDAA+B;AAC/B,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,yDAAsC;AACtC,yDAAsC;AACtC,oDAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,mDAAgC;AAChC,6CAA0B;AAC1B,kDAA+B;AAC/B,kDAA+B;AAC/B,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,yDAAsC;AACtC,yDAAsC;AACtC,oDAAiC;AACjC,uDAAoC;AACpC,wDAAqC;AACrC,wDAAqC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KafkaConsumer = void 0;
|
|
4
|
+
class KafkaConsumer {
|
|
5
|
+
#id;
|
|
6
|
+
#groupId;
|
|
7
|
+
#consumer;
|
|
8
|
+
#kafka;
|
|
9
|
+
#connected = false;
|
|
10
|
+
constructor(kafka, id, groupId) {
|
|
11
|
+
this.#id = id;
|
|
12
|
+
this.#groupId = groupId;
|
|
13
|
+
this.#kafka = kafka;
|
|
14
|
+
this.#consumer = this.#kafka.consumer({ groupId: this.#groupId });
|
|
15
|
+
}
|
|
16
|
+
get id() {
|
|
17
|
+
return this.#id;
|
|
18
|
+
}
|
|
19
|
+
async Connect() {
|
|
20
|
+
if (!this.#connected) {
|
|
21
|
+
await this.#consumer.connect();
|
|
22
|
+
this.#connected = true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async Disconnect() {
|
|
26
|
+
if (this.#connected) {
|
|
27
|
+
await this.#consumer.disconnect();
|
|
28
|
+
this.#connected = false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
Subscribe = async (topics) => {
|
|
32
|
+
if (this.#connected) {
|
|
33
|
+
await this.#consumer.subscribe({ topics, fromBeginning: true });
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
throw new Error(`[Subscribe] Consumer not connected.`);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
Stop = async () => {
|
|
40
|
+
if (this.#connected) {
|
|
41
|
+
await this.#consumer.stop();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
throw new Error(`[Stop] Consumer not connected.`);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
StartConsumingMessages = async (cb) => {
|
|
48
|
+
if (this.#connected) {
|
|
49
|
+
await this.#consumer.run({
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
+
eachMessage: async ({ topic, partition, message, heartbeat, pause }) => {
|
|
52
|
+
try {
|
|
53
|
+
if (message.key) {
|
|
54
|
+
if (message.value) {
|
|
55
|
+
cb(message.key.toString(), partition, message.value.toString(), message.headers);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
cb(message.key.toString(), partition, "", message.headers);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (message.value) {
|
|
63
|
+
cb("", partition, message.value?.toString(), message.headers);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
cb("", partition, "", message.headers);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
console.log(err);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new Error(`[StartConsumingMessages] Consumer not connected.`);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.KafkaConsumer = KafkaConsumer;
|
|
82
|
+
//# sourceMappingURL=kafkaconsumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkaconsumer.js","sourceRoot":"","sources":["../../src/kafka/kafkaconsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,6 +59,9 @@ services:
|
|
|
59
59
|
*/
|
|
60
60
|
const stsutils_1 = require("@nsshunt/stsutils");
|
|
61
61
|
const kafkajs_1 = require("kafkajs");
|
|
62
|
+
const uuid_1 = require("uuid");
|
|
63
|
+
const kafkaconsumer_1 = require("./kafkaconsumer");
|
|
64
|
+
const kafkaproducer_1 = require("./kafkaproducer");
|
|
62
65
|
const net_1 = __importDefault(require("net"));
|
|
63
66
|
const tls_1 = __importDefault(require("tls"));
|
|
64
67
|
const KEEP_ALIVE_DELAY = 60000; // in ms
|
|
@@ -72,8 +75,6 @@ const myCustomSocketFactory = (config) => {
|
|
|
72
75
|
};
|
|
73
76
|
class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
74
77
|
#kafka;
|
|
75
|
-
#producer;
|
|
76
|
-
#consumer;
|
|
77
78
|
constructor(options) {
|
|
78
79
|
super(options);
|
|
79
80
|
this.#kafka = new kafkajs_1.Kafka({
|
|
@@ -84,23 +85,12 @@ class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
|
84
85
|
//socketFactory: myCustomSocketFactory,
|
|
85
86
|
});
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
-
return this.#kafka;
|
|
88
|
+
CreateProducer() {
|
|
89
|
+
return new kafkaproducer_1.KafkaProducer(this.#kafka, (0, uuid_1.v4)());
|
|
90
|
+
}
|
|
91
|
+
CreateConsumer(groupId) {
|
|
92
|
+
return new kafkaconsumer_1.KafkaConsumer(this.#kafka, (0, uuid_1.v4)(), groupId);
|
|
89
93
|
}
|
|
90
|
-
ProducerConnect = async () => {
|
|
91
|
-
this.#producer = this.#kafka.producer();
|
|
92
|
-
return this.#producer.connect();
|
|
93
|
-
};
|
|
94
|
-
ProducerDisconnect = async () => {
|
|
95
|
-
await this.#producer?.disconnect();
|
|
96
|
-
};
|
|
97
|
-
ConsumerConnect = async (groupId) => {
|
|
98
|
-
this.#consumer = this.#kafka.consumer({ groupId });
|
|
99
|
-
return this.#consumer.connect();
|
|
100
|
-
};
|
|
101
|
-
ConsumerDisconnect = async () => {
|
|
102
|
-
return this.#consumer?.disconnect();
|
|
103
|
-
};
|
|
104
94
|
CreateTopic = async (topic, partitions) => {
|
|
105
95
|
const admin = this.#kafka.admin();
|
|
106
96
|
await admin.connect();
|
|
@@ -118,63 +108,7 @@ class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
|
118
108
|
}
|
|
119
109
|
]
|
|
120
110
|
});
|
|
121
|
-
|
|
122
|
-
};
|
|
123
|
-
SendMessage = async (topic, message) => {
|
|
124
|
-
if (this.#producer) {
|
|
125
|
-
return this.#producer.send({
|
|
126
|
-
topic,
|
|
127
|
-
messages: [message]
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
SendMessages = async (topic, messages) => {
|
|
135
|
-
if (this.#producer) {
|
|
136
|
-
return this.#producer.send({
|
|
137
|
-
topic,
|
|
138
|
-
messages
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
StartConsumingMessages = async (cb) => {
|
|
146
|
-
await this.#consumer?.run({
|
|
147
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
148
|
-
eachMessage: async ({ topic, partition, message, heartbeat, pause }) => {
|
|
149
|
-
try {
|
|
150
|
-
if (message.key) {
|
|
151
|
-
if (message.value) {
|
|
152
|
-
cb(message.key.toString(), partition, message.value.toString(), message.headers);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
cb(message.key.toString(), partition, "", message.headers);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
if (message.value) {
|
|
160
|
-
cb("", partition, message.value?.toString(), message.headers);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
cb("", partition, "", message.headers);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
catch (err) {
|
|
168
|
-
console.log(err);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
};
|
|
173
|
-
Subscribe = async (topics) => {
|
|
174
|
-
await this.#consumer?.subscribe({ topics, fromBeginning: true });
|
|
175
|
-
};
|
|
176
|
-
Stop = async () => {
|
|
177
|
-
await this.#consumer?.stop();
|
|
111
|
+
return admin.disconnect();
|
|
178
112
|
};
|
|
179
113
|
}
|
|
180
114
|
exports.KafkaManager = KafkaManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":";;;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE;AACF,gDAAkD;AAElD,qCAAyC;AAEzC,+BAAoC;AAEpC,mDAA+C;AAC/C,mDAA+C;AAE/C,8CAAqB;AACrB,8CAAqB;AAErB,MAAM,gBAAgB,GAAG,KAAK,CAAA,CAAC,QAAQ;AAiBvC,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,CAAC,MAA4B,EAAE,EAAE;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG;QACrB,CAAC,CAAC,aAAG,CAAC,OAAO,CACT,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,aAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAC9H,MAAM,CAAC,SAAS,CACnB;QACD,CAAC,CAAC,aAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAE7E,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IAE3C,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAa,YAAa,SAAQ,yBAAc;IAC5C,MAAM,CAAO;IAEb,YAAY,OAA4B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,MAAM,GAAG,IAAI,eAAK,CAAC;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,kBAAQ,CAAC,OAAO;YAC1B,6CAA6C;YAC7C,uCAAuC;SAC1C,CAAC,CAAA;IACN,CAAC;IAED,cAAc;QACV,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,SAAM,GAAE,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,OAAe;QAC1B,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAA,SAAM,GAAE,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,GAAG,KAAK,EAAE,KAAa,EAAE,UAAkB,EAAiB,EAAE;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACjC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;QACrB,MAAM,KAAK,CAAC,YAAY,CAAC;YACrB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO;YAC9B,MAAM,EAAE;gBACJ;oBACI,KAAK,EAAE,KAAK;oBACZ,aAAa,EAAE,UAAU,EAAM,2DAA2D;oBAC1F,sGAAsG;oBACtG,8FAA8F;oBAC9F,uGAAuG;iBAC1G;aACJ;SACJ,CAAC,CAAA;QACF,OAAO,KAAK,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC,CAAA;CACJ;AA1CD,oCA0CC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KafkaProducer = void 0;
|
|
4
|
+
class KafkaProducer {
|
|
5
|
+
#id;
|
|
6
|
+
#producer;
|
|
7
|
+
#kafka;
|
|
8
|
+
#connected = false;
|
|
9
|
+
constructor(kafka, id) {
|
|
10
|
+
this.#id = id;
|
|
11
|
+
this.#kafka = kafka;
|
|
12
|
+
this.#producer = this.#kafka.producer();
|
|
13
|
+
}
|
|
14
|
+
get id() {
|
|
15
|
+
return this.#id;
|
|
16
|
+
}
|
|
17
|
+
async Connect() {
|
|
18
|
+
if (!this.#connected) {
|
|
19
|
+
await this.#producer.connect();
|
|
20
|
+
this.#connected = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async Disconnect() {
|
|
24
|
+
if (this.#connected) {
|
|
25
|
+
await this.#producer.disconnect();
|
|
26
|
+
this.#connected = false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
SendMessage = async (topic, message) => {
|
|
30
|
+
if (this.#connected) {
|
|
31
|
+
return this.#producer.send({
|
|
32
|
+
topic,
|
|
33
|
+
messages: [message]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error(`[SendMessage] Producer not connected.`);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
SendMessages = async (topic, messages) => {
|
|
41
|
+
if (this.#connected) {
|
|
42
|
+
return this.#producer.send({
|
|
43
|
+
topic,
|
|
44
|
+
messages
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw new Error(`[SendMessages] Producer not connected.`);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
exports.KafkaProducer = KafkaProducer;
|
|
53
|
+
//# sourceMappingURL=kafkaproducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkaproducer.js","sourceRoot":"","sources":["../../src/kafka/kafkaproducer.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IACtB,GAAG,CAAQ;IACX,SAAS,CAAW;IACpB,MAAM,CAAQ;IACd,UAAU,GAAY,KAAK,CAAC;IAE5B,YAAY,KAAY,EAAE,EAAU;QAChC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;YACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;IACL,CAAC;IAED,WAAW,GAAG,KAAK,EAAC,KAAa,EAAE,OAAsC,EAA8B,EAAE;QACrG,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACvB,KAAK;gBACL,QAAQ,EAAE,CAAE,OAAO,CAAE;aACxB,CAAC,CAAA;SACL;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC5D;IACL,CAAC,CAAA;IAED,YAAY,GAAG,KAAK,EAAC,KAAa,EAAE,QAAyC,EAA8B,EAAE;QACzG,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACvB,KAAK;gBACL,QAAQ;aACX,CAAC,CAAA;SACL;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC7D;IACL,CAAC,CAAA;CACJ;AAnDD,sCAmDC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
4
4
|
const config_1 = require("./config");
|
|
5
|
-
const kafkamanager_1 = require("./../kafkamanager");
|
|
5
|
+
const kafkamanager_1 = require("./../kafka/kafkamanager");
|
|
6
6
|
async function Sleep(milliseconds = 1000) {
|
|
7
7
|
return new Promise(resolve => setTimeout(resolve, milliseconds));
|
|
8
8
|
}
|
|
@@ -12,9 +12,10 @@ const km = new kafkamanager_1.KafkaManager({
|
|
|
12
12
|
timeout: config_1.TIMEOUT
|
|
13
13
|
});
|
|
14
14
|
const runme = async () => {
|
|
15
|
-
|
|
16
|
-
await
|
|
17
|
-
await
|
|
15
|
+
const consumer = km.CreateConsumer(config_1.GROUP_ID + process.env.GROUP_ID);
|
|
16
|
+
await consumer.Connect();
|
|
17
|
+
await consumer.Subscribe([config_1.TOPIC]);
|
|
18
|
+
await consumer.StartConsumingMessages((key, partition, value, headers) => {
|
|
18
19
|
console.log({
|
|
19
20
|
key,
|
|
20
21
|
partition,
|
|
@@ -22,9 +23,9 @@ const runme = async () => {
|
|
|
22
23
|
headers
|
|
23
24
|
});
|
|
24
25
|
});
|
|
25
|
-
await
|
|
26
|
-
await
|
|
27
|
-
await
|
|
26
|
+
await consumer.Stop();
|
|
27
|
+
await consumer.Subscribe(['zzz']);
|
|
28
|
+
await consumer.StartConsumingMessages((key, partition, value, headers) => {
|
|
28
29
|
console.log({
|
|
29
30
|
key,
|
|
30
31
|
partition,
|
|
@@ -32,9 +33,9 @@ const runme = async () => {
|
|
|
32
33
|
headers
|
|
33
34
|
});
|
|
34
35
|
});
|
|
35
|
-
await
|
|
36
|
-
await
|
|
37
|
-
await
|
|
36
|
+
await consumer.Stop();
|
|
37
|
+
await consumer.Subscribe(['yyy']);
|
|
38
|
+
await consumer.StartConsumingMessages((key, partition, value, headers) => {
|
|
38
39
|
/*
|
|
39
40
|
console.log({
|
|
40
41
|
key,
|
|
@@ -48,7 +49,7 @@ const runme = async () => {
|
|
|
48
49
|
//await km.Subscribe(['zzz'], cb);
|
|
49
50
|
process.on("SIGINT", async () => {
|
|
50
51
|
console.log('=========SIGTERM START =======================');
|
|
51
|
-
await
|
|
52
|
+
await consumer.Disconnect();
|
|
52
53
|
console.log('=========SIGTERM END =======================');
|
|
53
54
|
process.exit();
|
|
54
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/kafkatesting/consume.ts"],"names":[],"mappings":";;AAAA,iDAAiD,CAAE,UAAU;AAC7D,qCAAuE;AAEvE,
|
|
1
|
+
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/kafkatesting/consume.ts"],"names":[],"mappings":";;AAAA,iDAAiD,CAAE,UAAU;AAC7D,qCAAuE;AAEvE,0DAAsD;AAGtD,KAAK,UAAU,KAAK,CAAC,YAAY,GAAG,IAAI;IACpC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,EAAE,GAAG,IAAI,2BAAY,CAAC;IACxB,QAAQ,EAAE,kBAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS;IAC3C,OAAO,EAAE,gBAAO;IAChB,OAAO,EAAE,gBAAO;CACnB,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IAErB,MAAM,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,iBAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpE,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAEzB,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,cAAK,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,CAAC,sBAAsB,CAAC,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAa,EAAE,OAA+B,EAAE,EAAE;QACrH,OAAO,CAAC,GAAG,CAAC;YACR,GAAG;YACH,SAAS;YACT,KAAK;YACL,OAAO;SACV,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,CAAC,sBAAsB,CAAC,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAa,EAAE,OAA+B,EAAE,EAAE;QACrH,OAAO,CAAC,GAAG,CAAC;YACR,GAAG;YACH,SAAS;YACT,KAAK;YACL,OAAO;SACV,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,CAAC,sBAAsB,CAAC,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAa,EAAE,OAA+B,EAAE,EAAE;QACrH;;;;;;;UAOE;QACF,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,eAAe,KAAK,mBAAmB,SAAS,gBAAgB,OAAO,GAAG,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAElC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;QAC7D,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,SAAS;QACL,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;KACrB;AACL,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BE;AAEF,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -53,7 +53,7 @@ services:
|
|
|
53
53
|
|
|
54
54
|
*/
|
|
55
55
|
const config_1 = require("./config");
|
|
56
|
-
const kafkamanager_1 = require("./../kafkamanager");
|
|
56
|
+
const kafkamanager_1 = require("./../kafka/kafkamanager");
|
|
57
57
|
require("colors");
|
|
58
58
|
async function Sleep(milliseconds = 1000) {
|
|
59
59
|
return new Promise(resolve => setTimeout(resolve, milliseconds));
|
|
@@ -67,29 +67,30 @@ const runme = async () => {
|
|
|
67
67
|
await km.CreateTopic(config_1.TOPIC, config_1.PARTITIONS);
|
|
68
68
|
await km.CreateTopic('zzz', 1);
|
|
69
69
|
await km.CreateTopic('yyy', 1);
|
|
70
|
-
|
|
70
|
+
const producer = km.CreateProducer();
|
|
71
|
+
await producer.Connect();
|
|
71
72
|
const count = 100000;
|
|
72
73
|
const sleepTime = 1000;
|
|
73
74
|
process.on("SIGINT", async () => {
|
|
74
75
|
console.log('=========SIGTERM START =======================');
|
|
75
|
-
await
|
|
76
|
+
await producer.Disconnect();
|
|
76
77
|
console.log('=========SIGTERM END =======================');
|
|
77
78
|
process.exit();
|
|
78
79
|
});
|
|
79
80
|
for (let i = 0; i < count; i++) {
|
|
80
81
|
if (i % 100 === 0)
|
|
81
82
|
console.log(i);
|
|
82
|
-
const retVal = await
|
|
83
|
+
const retVal = await producer.SendMessages(config_1.TOPIC, [
|
|
83
84
|
{ key: 'key1', value: `hello world - ${i}`.green },
|
|
84
85
|
{ key: 'key2', value: 'hey hey! -2' },
|
|
85
86
|
{ key: 'key3', value: 'hey hey! -3' },
|
|
86
87
|
{ key: 'key4', value: 'hey hey! -4' },
|
|
87
88
|
{ key: 'key5', value: 'hey hey! -5' }
|
|
88
89
|
]);
|
|
89
|
-
await
|
|
90
|
+
await producer.SendMessages('zzz', [
|
|
90
91
|
{ key: 'key-zzz', value: `hello world - ${i}`.yellow }
|
|
91
92
|
]);
|
|
92
|
-
await
|
|
93
|
+
await producer.SendMessages('yyy', [
|
|
93
94
|
{ key: 'key-yyy', value: `hello world - ${i}`.cyan }
|
|
94
95
|
]);
|
|
95
96
|
if (i % 100 === 0) {
|
|
@@ -100,7 +101,7 @@ const runme = async () => {
|
|
|
100
101
|
await Sleep(sleepTime);
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
|
-
await
|
|
104
|
+
await producer.Disconnect();
|
|
104
105
|
};
|
|
105
106
|
/*
|
|
106
107
|
const errorTypes = ['unhandledRejection', 'uncaughtException']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"produce.js","sourceRoot":"","sources":["../../src/kafkatesting/produce.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE;AACF,qCAAyE;AAEzE,
|
|
1
|
+
{"version":3,"file":"produce.js","sourceRoot":"","sources":["../../src/kafkatesting/produce.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -10,4 +10,6 @@ export * from './workerprocessbase'
|
|
|
10
10
|
export * from './socketIoServerHelper'
|
|
11
11
|
export * from './stslatencycontroller'
|
|
12
12
|
export * from './stslatencyroute'
|
|
13
|
-
export * from './kafkamanager'
|
|
13
|
+
export * from './kafka/kafkamanager'
|
|
14
|
+
export * from './kafka/kafkaproducer'
|
|
15
|
+
export * from './kafka/kafkaconsumer'
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Kafka, Consumer, IHeaders } from 'kafkajs'
|
|
2
|
+
|
|
3
|
+
export class KafkaConsumer {
|
|
4
|
+
#id: string
|
|
5
|
+
#groupId: string
|
|
6
|
+
#consumer: Consumer;
|
|
7
|
+
#kafka: Kafka;
|
|
8
|
+
#connected: boolean = false;
|
|
9
|
+
|
|
10
|
+
constructor(kafka: Kafka, id: string, groupId: string) {
|
|
11
|
+
this.#id = id;
|
|
12
|
+
this.#groupId = groupId;
|
|
13
|
+
this.#kafka = kafka;
|
|
14
|
+
this.#consumer = this.#kafka.consumer({ groupId: this.#groupId })
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get id(): string {
|
|
18
|
+
return this.#id;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async Connect(): Promise<void> {
|
|
22
|
+
if (!this.#connected) {
|
|
23
|
+
await this.#consumer.connect()
|
|
24
|
+
this.#connected = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async Disconnect(): Promise<void> {
|
|
29
|
+
if (this.#connected) {
|
|
30
|
+
await this.#consumer.disconnect()
|
|
31
|
+
this.#connected = false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
Subscribe = async(topics: string[]): Promise<void> => {
|
|
36
|
+
if (this.#connected) {
|
|
37
|
+
await this.#consumer.subscribe({ topics, fromBeginning: true })
|
|
38
|
+
} else {
|
|
39
|
+
throw new Error(`[Subscribe] Consumer not connected.`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Stop = async(): Promise<void> => {
|
|
44
|
+
if (this.#connected) {
|
|
45
|
+
await this.#consumer.stop();
|
|
46
|
+
} else {
|
|
47
|
+
throw new Error(`[Stop] Consumer not connected.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
StartConsumingMessages = async (cb: (key: string, partition: number, value: string, headers: IHeaders | undefined) => void): Promise<void> => {
|
|
52
|
+
if (this.#connected) {
|
|
53
|
+
await this.#consumer.run({
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
55
|
+
eachMessage: async ({ topic, partition, message, heartbeat, pause }) => {
|
|
56
|
+
try {
|
|
57
|
+
if (message.key) {
|
|
58
|
+
if (message.value) {
|
|
59
|
+
cb(message.key.toString(), partition, message.value.toString(), message.headers)
|
|
60
|
+
} else {
|
|
61
|
+
cb(message.key.toString(), partition, "", message.headers)
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
if (message.value) {
|
|
65
|
+
cb("", partition, message.value?.toString(), message.headers)
|
|
66
|
+
} else {
|
|
67
|
+
cb("", partition, "", message.headers)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
} catch (err) {
|
|
71
|
+
console.log(err);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
} else {
|
|
76
|
+
throw new Error(`[StartConsumingMessages] Consumer not connected.`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -53,7 +53,12 @@ services:
|
|
|
53
53
|
*/
|
|
54
54
|
import { STSOptionsBase } from '@nsshunt/stsutils'
|
|
55
55
|
|
|
56
|
-
import { Kafka,
|
|
56
|
+
import { Kafka, logLevel } from 'kafkajs'
|
|
57
|
+
|
|
58
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
59
|
+
|
|
60
|
+
import { KafkaConsumer } from './kafkaconsumer'
|
|
61
|
+
import { KafkaProducer } from './kafkaproducer'
|
|
57
62
|
|
|
58
63
|
import net from 'net'
|
|
59
64
|
import tls from 'tls'
|
|
@@ -91,8 +96,6 @@ const myCustomSocketFactory = (config: ICustomSocketFactory) => {
|
|
|
91
96
|
|
|
92
97
|
export class KafkaManager extends STSOptionsBase {
|
|
93
98
|
#kafka: Kafka
|
|
94
|
-
#producer: Producer | undefined;
|
|
95
|
-
#consumer: Consumer | undefined;
|
|
96
99
|
|
|
97
100
|
constructor(options: IKafkaManagerConfig) {
|
|
98
101
|
super(options);
|
|
@@ -106,29 +109,15 @@ export class KafkaManager extends STSOptionsBase {
|
|
|
106
109
|
})
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
|
|
110
|
-
return this.#kafka;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
ProducerConnect = async (): Promise<void> => {
|
|
114
|
-
this.#producer = this.#kafka.producer()
|
|
115
|
-
return this.#producer.connect()
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
ProducerDisconnect = async () => {
|
|
119
|
-
await this.#producer?.disconnect()
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
ConsumerConnect = async (groupId: string): Promise<void> => {
|
|
123
|
-
this.#consumer = this.#kafka.consumer({ groupId })
|
|
124
|
-
return this.#consumer.connect()
|
|
112
|
+
CreateProducer(): KafkaProducer {
|
|
113
|
+
return new KafkaProducer(this.#kafka, uuidv4());
|
|
125
114
|
}
|
|
126
115
|
|
|
127
|
-
|
|
128
|
-
return this.#
|
|
116
|
+
CreateConsumer(groupId: string) {
|
|
117
|
+
return new KafkaConsumer(this.#kafka, uuidv4(), groupId);
|
|
129
118
|
}
|
|
130
119
|
|
|
131
|
-
CreateTopic = async (topic: string, partitions: number) => {
|
|
120
|
+
CreateTopic = async (topic: string, partitions: number): Promise<void> => {
|
|
132
121
|
const admin = this.#kafka.admin()
|
|
133
122
|
await admin.connect()
|
|
134
123
|
await admin.createTopics({
|
|
@@ -145,61 +134,6 @@ export class KafkaManager extends STSOptionsBase {
|
|
|
145
134
|
}
|
|
146
135
|
]
|
|
147
136
|
})
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
SendMessage = async(topic: string, message: { key: string, value: string} ): Promise<RecordMetadata[] | null> => {
|
|
152
|
-
if (this.#producer) {
|
|
153
|
-
return this.#producer.send({
|
|
154
|
-
topic,
|
|
155
|
-
messages: [ message ]
|
|
156
|
-
})
|
|
157
|
-
} else {
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
SendMessages = async(topic: string, messages: { key: string, value: string}[] ): Promise<RecordMetadata[] | null> => {
|
|
163
|
-
if (this.#producer) {
|
|
164
|
-
return this.#producer.send({
|
|
165
|
-
topic,
|
|
166
|
-
messages
|
|
167
|
-
})
|
|
168
|
-
} else {
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
StartConsumingMessages = async (cb: (key: string, partition: number, value: string, headers: IHeaders | undefined) => void) => {
|
|
174
|
-
await this.#consumer?.run({
|
|
175
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
176
|
-
eachMessage: async ({ topic, partition, message, heartbeat, pause }) => {
|
|
177
|
-
try {
|
|
178
|
-
if (message.key) {
|
|
179
|
-
if (message.value) {
|
|
180
|
-
cb(message.key.toString(), partition, message.value.toString(), message.headers)
|
|
181
|
-
} else {
|
|
182
|
-
cb(message.key.toString(), partition, "", message.headers)
|
|
183
|
-
}
|
|
184
|
-
} else {
|
|
185
|
-
if (message.value) {
|
|
186
|
-
cb("", partition, message.value?.toString(), message.headers)
|
|
187
|
-
} else {
|
|
188
|
-
cb("", partition, "", message.headers)
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
} catch (err) {
|
|
192
|
-
console.log(err);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
})
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
Subscribe = async(topics: string[]) => {
|
|
199
|
-
await this.#consumer?.subscribe({ topics, fromBeginning: true })
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
Stop = async() => {
|
|
203
|
-
await this.#consumer?.stop();
|
|
137
|
+
return admin.disconnect()
|
|
204
138
|
}
|
|
205
139
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Kafka, Producer, RecordMetadata } from 'kafkajs'
|
|
2
|
+
|
|
3
|
+
export class KafkaProducer {
|
|
4
|
+
#id: string
|
|
5
|
+
#producer: Producer;
|
|
6
|
+
#kafka: Kafka;
|
|
7
|
+
#connected: boolean = false;
|
|
8
|
+
|
|
9
|
+
constructor(kafka: Kafka, id: string) {
|
|
10
|
+
this.#id = id;
|
|
11
|
+
this.#kafka = kafka;
|
|
12
|
+
this.#producer = this.#kafka.producer()
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get id(): string {
|
|
16
|
+
return this.#id;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async Connect(): Promise<void> {
|
|
20
|
+
if (!this.#connected) {
|
|
21
|
+
await this.#producer.connect();
|
|
22
|
+
this.#connected = true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async Disconnect(): Promise<void> {
|
|
27
|
+
if (this.#connected) {
|
|
28
|
+
await this.#producer.disconnect()
|
|
29
|
+
this.#connected = false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
SendMessage = async(topic: string, message: { key: string, value: string} ): Promise<RecordMetadata[]> => {
|
|
34
|
+
if (this.#connected) {
|
|
35
|
+
return this.#producer.send({
|
|
36
|
+
topic,
|
|
37
|
+
messages: [ message ]
|
|
38
|
+
})
|
|
39
|
+
} else {
|
|
40
|
+
throw new Error(`[SendMessage] Producer not connected.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
SendMessages = async(topic: string, messages: { key: string, value: string}[] ): Promise<RecordMetadata[]> => {
|
|
45
|
+
if (this.#connected) {
|
|
46
|
+
return this.#producer.send({
|
|
47
|
+
topic,
|
|
48
|
+
messages
|
|
49
|
+
})
|
|
50
|
+
} else {
|
|
51
|
+
throw new Error(`[SendMessages] Producer not connected.`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
2
|
import { TOPIC, GROUP_ID, CLIENT_ID, BROKERS, TIMEOUT } from './config'
|
|
3
3
|
|
|
4
|
-
import { KafkaManager } from './../kafkamanager'
|
|
4
|
+
import { KafkaManager } from './../kafka/kafkamanager'
|
|
5
5
|
import { JSONObject } from '@nsshunt/stsutils';
|
|
6
6
|
|
|
7
7
|
async function Sleep(milliseconds = 1000) {
|
|
@@ -16,11 +16,13 @@ const km = new KafkaManager({
|
|
|
16
16
|
|
|
17
17
|
const runme = async () => {
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const consumer = km.CreateConsumer(GROUP_ID + process.env.GROUP_ID);
|
|
20
20
|
|
|
21
|
-
await
|
|
21
|
+
await consumer.Connect();
|
|
22
22
|
|
|
23
|
-
await
|
|
23
|
+
await consumer.Subscribe([TOPIC]);
|
|
24
|
+
|
|
25
|
+
await consumer.StartConsumingMessages((key: string, partition: number, value: string, headers: JSONObject | undefined) => {
|
|
24
26
|
console.log({
|
|
25
27
|
key,
|
|
26
28
|
partition,
|
|
@@ -29,11 +31,11 @@ const runme = async () => {
|
|
|
29
31
|
});
|
|
30
32
|
});
|
|
31
33
|
|
|
32
|
-
await
|
|
34
|
+
await consumer.Stop();
|
|
33
35
|
|
|
34
|
-
await
|
|
36
|
+
await consumer.Subscribe(['zzz']);
|
|
35
37
|
|
|
36
|
-
await
|
|
38
|
+
await consumer.StartConsumingMessages((key: string, partition: number, value: string, headers: JSONObject | undefined) => {
|
|
37
39
|
console.log({
|
|
38
40
|
key,
|
|
39
41
|
partition,
|
|
@@ -42,11 +44,11 @@ const runme = async () => {
|
|
|
42
44
|
});
|
|
43
45
|
});
|
|
44
46
|
|
|
45
|
-
await
|
|
47
|
+
await consumer.Stop();
|
|
46
48
|
|
|
47
|
-
await
|
|
49
|
+
await consumer.Subscribe(['yyy']);
|
|
48
50
|
|
|
49
|
-
await
|
|
51
|
+
await consumer.StartConsumingMessages((key: string, partition: number, value: string, headers: JSONObject | undefined) => {
|
|
50
52
|
/*
|
|
51
53
|
console.log({
|
|
52
54
|
key,
|
|
@@ -62,7 +64,7 @@ const runme = async () => {
|
|
|
62
64
|
|
|
63
65
|
process.on("SIGINT", async () => {
|
|
64
66
|
console.log('=========SIGTERM START =======================')
|
|
65
|
-
await
|
|
67
|
+
await consumer.Disconnect();
|
|
66
68
|
console.log('=========SIGTERM END =======================')
|
|
67
69
|
process.exit();
|
|
68
70
|
});
|
|
@@ -52,7 +52,7 @@ services:
|
|
|
52
52
|
*/
|
|
53
53
|
import { TOPIC, CLIENT_ID, BROKERS, PARTITIONS, TIMEOUT } from './config'
|
|
54
54
|
|
|
55
|
-
import { KafkaManager } from './../kafkamanager'
|
|
55
|
+
import { KafkaManager } from './../kafka/kafkamanager'
|
|
56
56
|
|
|
57
57
|
import 'colors'
|
|
58
58
|
|
|
@@ -71,21 +71,23 @@ const runme = async () => {
|
|
|
71
71
|
await km.CreateTopic('zzz', 1);
|
|
72
72
|
await km.CreateTopic('yyy', 1);
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
const producer = km.CreateProducer();
|
|
75
|
+
|
|
76
|
+
await producer.Connect();
|
|
75
77
|
|
|
76
78
|
const count = 100000;
|
|
77
79
|
const sleepTime = 1000;
|
|
78
80
|
|
|
79
81
|
process.on("SIGINT", async () => {
|
|
80
82
|
console.log('=========SIGTERM START =======================')
|
|
81
|
-
await
|
|
83
|
+
await producer.Disconnect();
|
|
82
84
|
console.log('=========SIGTERM END =======================')
|
|
83
85
|
process.exit();
|
|
84
86
|
});
|
|
85
87
|
|
|
86
88
|
for (let i=0; i < count; i++) {
|
|
87
89
|
if (i % 100 === 0) console.log(i);
|
|
88
|
-
const retVal = await
|
|
90
|
+
const retVal = await producer.SendMessages(TOPIC, [
|
|
89
91
|
{ key: 'key1', value: `hello world - ${i}`.green },
|
|
90
92
|
{ key: 'key2', value: 'hey hey! -2' },
|
|
91
93
|
{ key: 'key3', value: 'hey hey! -3' },
|
|
@@ -94,12 +96,12 @@ const runme = async () => {
|
|
|
94
96
|
]
|
|
95
97
|
);
|
|
96
98
|
|
|
97
|
-
await
|
|
99
|
+
await producer.SendMessages('zzz', [
|
|
98
100
|
{ key: 'key-zzz', value: `hello world - ${i}`.yellow }
|
|
99
101
|
]
|
|
100
102
|
);
|
|
101
103
|
|
|
102
|
-
await
|
|
104
|
+
await producer.SendMessages('yyy', [
|
|
103
105
|
{ key: 'key-yyy', value: `hello world - ${i}`.cyan }
|
|
104
106
|
]
|
|
105
107
|
);
|
|
@@ -113,7 +115,7 @@ const runme = async () => {
|
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
|
|
116
|
-
await
|
|
118
|
+
await producer.Disconnect();
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
/*
|
package/types/index.d.ts
CHANGED
|
@@ -10,5 +10,7 @@ export * from './workerprocessbase';
|
|
|
10
10
|
export * from './socketIoServerHelper';
|
|
11
11
|
export * from './stslatencycontroller';
|
|
12
12
|
export * from './stslatencyroute';
|
|
13
|
-
export * from './kafkamanager';
|
|
13
|
+
export * from './kafka/kafkamanager';
|
|
14
|
+
export * from './kafka/kafkaproducer';
|
|
15
|
+
export * from './kafka/kafkaconsumer';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Kafka, IHeaders } from 'kafkajs';
|
|
2
|
+
export declare class KafkaConsumer {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(kafka: Kafka, id: string, groupId: string);
|
|
5
|
+
get id(): string;
|
|
6
|
+
Connect(): Promise<void>;
|
|
7
|
+
Disconnect(): Promise<void>;
|
|
8
|
+
Subscribe: (topics: string[]) => Promise<void>;
|
|
9
|
+
Stop: () => Promise<void>;
|
|
10
|
+
StartConsumingMessages: (cb: (key: string, partition: number, value: string, headers: IHeaders | undefined) => void) => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=kafkaconsumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkaconsumer.d.ts","sourceRoot":"","sources":["../../src/kafka/kafkaconsumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEnD,qBAAa,aAAa;;gBAOV,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAOrD,IAAI,EAAE,IAAI,MAAM,CAEf;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,SAAS,WAAiB,MAAM,EAAE,KAAG,QAAQ,IAAI,CAAC,CAMjD;IAED,IAAI,QAAY,QAAQ,IAAI,CAAC,CAM5B;IAED,sBAAsB,aAAoB,MAAM,aAAa,MAAM,SAAS,MAAM,WAAW,QAAQ,GAAG,SAAS,KAAK,IAAI,KAAG,QAAQ,IAAI,CAAC,CA2BzI;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { STSOptionsBase } from '@nsshunt/stsutils';
|
|
2
|
+
import { KafkaConsumer } from './kafkaconsumer';
|
|
3
|
+
import { KafkaProducer } from './kafkaproducer';
|
|
4
|
+
export interface IKafkaManagerConfig {
|
|
5
|
+
clientId: string;
|
|
6
|
+
brokers: string[];
|
|
7
|
+
timeout: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class KafkaManager extends STSOptionsBase {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(options: IKafkaManagerConfig);
|
|
12
|
+
CreateProducer(): KafkaProducer;
|
|
13
|
+
CreateConsumer(groupId: string): KafkaConsumer;
|
|
14
|
+
CreateTopic: (topic: string, partitions: number) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=kafkamanager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMlD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAO/C,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAyBD,qBAAa,YAAa,SAAQ,cAAc;;gBAGhC,OAAO,EAAE,mBAAmB;IAYxC,cAAc,IAAI,aAAa;IAI/B,cAAc,CAAC,OAAO,EAAE,MAAM;IAI9B,WAAW,UAAiB,MAAM,cAAc,MAAM,KAAG,QAAQ,IAAI,CAAC,CAkBrE;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Kafka, RecordMetadata } from 'kafkajs';
|
|
2
|
+
export declare class KafkaProducer {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(kafka: Kafka, id: string);
|
|
5
|
+
get id(): string;
|
|
6
|
+
Connect(): Promise<void>;
|
|
7
|
+
Disconnect(): Promise<void>;
|
|
8
|
+
SendMessage: (topic: string, message: {
|
|
9
|
+
key: string;
|
|
10
|
+
value: string;
|
|
11
|
+
}) => Promise<RecordMetadata[]>;
|
|
12
|
+
SendMessages: (topic: string, messages: {
|
|
13
|
+
key: string;
|
|
14
|
+
value: string;
|
|
15
|
+
}[]) => Promise<RecordMetadata[]>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=kafkaproducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafkaproducer.d.ts","sourceRoot":"","sources":["../../src/kafka/kafkaproducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,cAAc,EAAE,MAAM,SAAS,CAAA;AAEzD,qBAAa,aAAa;;gBAMV,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM;IAMpC,IAAI,EAAE,IAAI,MAAM,CAEf;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,WAAW,UAAgB,MAAM,WAAW;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,KAAI,QAAQ,cAAc,EAAE,CAAC,CASrG;IAED,YAAY,UAAgB,MAAM,YAAY;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,KAAI,QAAQ,cAAc,EAAE,CAAC,CASzG;CACJ"}
|
package/dist/kafkamanager.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"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"}
|
package/types/kafkamanager.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { STSOptionsBase } from '@nsshunt/stsutils';
|
|
2
|
-
import { Kafka, RecordMetadata, IHeaders } from 'kafkajs';
|
|
3
|
-
export interface IKafkaManagerConfig {
|
|
4
|
-
clientId: string;
|
|
5
|
-
brokers: string[];
|
|
6
|
-
timeout: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class KafkaManager extends STSOptionsBase {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(options: IKafkaManagerConfig);
|
|
11
|
-
get kafka(): Kafka;
|
|
12
|
-
ProducerConnect: () => Promise<void>;
|
|
13
|
-
ProducerDisconnect: () => Promise<void>;
|
|
14
|
-
ConsumerConnect: (groupId: string) => Promise<void>;
|
|
15
|
-
ConsumerDisconnect: () => Promise<void>;
|
|
16
|
-
CreateTopic: (topic: string, partitions: number) => Promise<void>;
|
|
17
|
-
SendMessage: (topic: string, message: {
|
|
18
|
-
key: string;
|
|
19
|
-
value: string;
|
|
20
|
-
}) => Promise<RecordMetadata[] | null>;
|
|
21
|
-
SendMessages: (topic: string, messages: {
|
|
22
|
-
key: string;
|
|
23
|
-
value: string;
|
|
24
|
-
}[]) => Promise<RecordMetadata[] | null>;
|
|
25
|
-
StartConsumingMessages: (cb: (key: string, partition: number, value: string, headers: IHeaders | undefined) => void) => Promise<void>;
|
|
26
|
-
Subscribe: (topics: string[]) => Promise<void>;
|
|
27
|
-
Stop: () => Promise<void>;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=kafkamanager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,KAAK,EAAY,cAAc,EAAY,QAAQ,EAAY,MAAM,SAAS,CAAA;AAOvF,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAyBD,qBAAa,YAAa,SAAQ,cAAc;;gBAKhC,OAAO,EAAE,mBAAmB;IAYxC,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,eAAe,QAAa,QAAQ,IAAI,CAAC,CAGxC;IAED,kBAAkB,sBAEjB;IAED,eAAe,YAAmB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAGvD;IAED,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IAED,WAAW,UAAiB,MAAM,cAAc,MAAM,mBAkBrD;IAED,WAAW,UAAgB,MAAM,WAAW;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,KAAI,QAAQ,cAAc,EAAE,GAAG,IAAI,CAAC,CAS5G;IAED,YAAY,UAAgB,MAAM,YAAY;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,KAAI,QAAQ,cAAc,EAAE,GAAG,IAAI,CAAC,CAShH;IAED,sBAAsB,aAAoB,MAAM,aAAa,MAAM,SAAS,MAAM,WAAW,QAAQ,GAAG,SAAS,KAAK,IAAI,mBAuBzH;IAED,SAAS,WAAiB,MAAM,EAAE,mBAEjC;IAED,IAAI,sBAEH;CACJ"}
|