@nsshunt/stsappframework 3.1.229 → 3.1.231

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.
Files changed (48) hide show
  1. package/dist/commonTypes.js +31 -0
  2. package/dist/commonTypes.js.map +1 -1
  3. package/dist/index.js +0 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/process/masterprocessbase.js +7 -7
  6. package/dist/process/masterprocessbase.js.map +1 -1
  7. package/dist/process/serverprocessbase.js +7 -7
  8. package/dist/process/serverprocessbase.js.map +1 -1
  9. package/package.json +8 -9
  10. package/src/commonTypes.ts +2 -1
  11. package/src/index.ts +0 -3
  12. package/src/process/masterprocessbase.ts +3 -4
  13. package/src/process/serverprocessbase.ts +3 -3
  14. package/types/commonTypes.d.ts +0 -12
  15. package/types/commonTypes.d.ts.map +1 -1
  16. package/types/index.d.ts +0 -3
  17. package/types/index.d.ts.map +1 -1
  18. package/types/process/masterprocessbase.d.ts.map +1 -1
  19. package/dist/kafka/kafkaconsumer.js +0 -128
  20. package/dist/kafka/kafkaconsumer.js.map +0 -1
  21. package/dist/kafka/kafkamanager.js +0 -173
  22. package/dist/kafka/kafkamanager.js.map +0 -1
  23. package/dist/kafka/kafkaproducer.js +0 -97
  24. package/dist/kafka/kafkaproducer.js.map +0 -1
  25. package/dist/kafkatesting/config.js +0 -10
  26. package/dist/kafkatesting/config.js.map +0 -1
  27. package/dist/kafkatesting/consume.js +0 -154
  28. package/dist/kafkatesting/consume.js.map +0 -1
  29. package/dist/kafkatesting/produce.js +0 -164
  30. package/dist/kafkatesting/produce.js.map +0 -1
  31. package/src/kafka/kafkaconsumer.ts +0 -136
  32. package/src/kafka/kafkamanager.ts +0 -210
  33. package/src/kafka/kafkaproducer.ts +0 -103
  34. package/src/kafkatesting/config.ts +0 -10
  35. package/src/kafkatesting/consume.ts +0 -185
  36. package/src/kafkatesting/produce.ts +0 -187
  37. package/types/kafka/kafkaconsumer.d.ts +0 -21
  38. package/types/kafka/kafkaconsumer.d.ts.map +0 -1
  39. package/types/kafka/kafkamanager.d.ts +0 -30
  40. package/types/kafka/kafkamanager.d.ts.map +0 -1
  41. package/types/kafka/kafkaproducer.d.ts +0 -24
  42. package/types/kafka/kafkaproducer.d.ts.map +0 -1
  43. package/types/kafkatesting/config.d.ts +0 -7
  44. package/types/kafkatesting/config.d.ts.map +0 -1
  45. package/types/kafkatesting/consume.d.ts +0 -2
  46. package/types/kafkatesting/consume.d.ts.map +0 -1
  47. package/types/kafkatesting/produce.d.ts +0 -2
  48. package/types/kafkatesting/produce.d.ts.map +0 -1
@@ -1,128 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KafkaConsumer = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- class KafkaConsumer {
9
- #id;
10
- #groupId;
11
- #consumer;
12
- #kafka;
13
- #connected = false;
14
- #options;
15
- constructor(options) {
16
- this.#options = options;
17
- this.#id = this.#options.id;
18
- this.#groupId = this.#options.groupId;
19
- this.#kafka = this.#options.kafka;
20
- this.#consumer = this.#kafka.consumer({
21
- groupId: this.#groupId,
22
- retry: {
23
- restartOnFailure: async (error) => {
24
- this.#LogErrorMessage(chalk_1.default.magenta(`${process.pid}:KafkaConsumer:constructor:restartOnFailure(): Error: [${error}]`));
25
- return true;
26
- }
27
- }
28
- });
29
- }
30
- #LogErrorMessage(message) {
31
- this.#options.logger.error(message);
32
- }
33
- get consumer() {
34
- return this.#consumer;
35
- }
36
- get id() {
37
- return this.#id;
38
- }
39
- #RaiseError = (msg, errorCb) => {
40
- const errorMessage = `${process.pid}:KafkaConsumer:${msg}`;
41
- this.#LogErrorMessage(chalk_1.default.red(errorMessage));
42
- errorCb(errorMessage);
43
- };
44
- async Connect(errorCb) {
45
- if (!this.#connected) {
46
- try {
47
- await this.#consumer.connect();
48
- this.#connected = true;
49
- }
50
- catch (error) {
51
- this.#RaiseError(`Connect(): Error: [${error}]`, errorCb);
52
- }
53
- }
54
- }
55
- async Disconnect(errorCb) {
56
- if (this.#connected) {
57
- try {
58
- await this.#consumer.disconnect();
59
- this.#connected = false;
60
- }
61
- catch (error) {
62
- this.#RaiseError(`Disconnect(): Error: [${error}]`, errorCb);
63
- }
64
- }
65
- }
66
- Subscribe = async (topics, fromBeginning, errorCb) => {
67
- if (this.#connected) {
68
- try {
69
- await this.#consumer.subscribe({ topics, fromBeginning });
70
- }
71
- catch (error) {
72
- this.#RaiseError(`Subscribe(): Error: [${error}]`, errorCb);
73
- }
74
- }
75
- else {
76
- await this.Connect((error) => {
77
- this.#RaiseError(`Subscribe(): Could not consumer.connect, Error: [${error}]`, errorCb);
78
- });
79
- }
80
- };
81
- Stop = async (errorCb) => {
82
- if (this.#connected) {
83
- try {
84
- await this.#consumer.stop();
85
- }
86
- catch (error) {
87
- this.#RaiseError(`Stop(): Error: [${error}]`, errorCb);
88
- }
89
- }
90
- };
91
- StartConsumingMessages = async (autoCommit, cb, errorCb) => {
92
- if (this.#connected) {
93
- await this.#consumer.run({
94
- autoCommit,
95
- eachMessage: async ({ topic, partition, message, heartbeat, pause }) => {
96
- try {
97
- cb(topic, partition, message, heartbeat, pause);
98
- /*
99
- if (message.key) {
100
- if (message.value) {
101
- cb(topic.toString(), message.key.toString(), partition, message.value.toString(), message.headers)
102
- } else {
103
- cb(topic.toString(), message.key.toString(), partition, "", message.headers)
104
- }
105
- } else {
106
- if (message.value) {
107
- cb(topic.toString(), "", partition, message.value?.toString(), message.headers)
108
- } else {
109
- cb(topic.toString(), "", partition, "", message.headers)
110
- }
111
- }
112
- */
113
- }
114
- catch (error) {
115
- this.#RaiseError(`StartConsumingMessages:eachMessage(): Error: [${error}]`, errorCb);
116
- }
117
- }
118
- });
119
- }
120
- else {
121
- await this.Connect((error) => {
122
- this.#RaiseError(`StartConsumingMessages(): Could not consumer.connect, Error: [${error}]`, errorCb);
123
- });
124
- }
125
- };
126
- }
127
- exports.KafkaConsumer = KafkaConsumer;
128
- //# sourceMappingURL=kafkaconsumer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kafkaconsumer.js","sourceRoot":"","sources":["../../src/kafka/kafkaconsumer.ts"],"names":[],"mappings":"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"}
@@ -1,173 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KafkaManager = void 0;
7
- /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
8
- /*
9
-
10
- kafka example server #01 - Docker Compose File
11
- ----------------------------------------------
12
- Note: In this example, the log retention is set to 24 hours (rather than default to 1 week)
13
- https://www.conduktor.io/kafka/kafka-topic-configuration-log-retention/
14
-
15
- version: '2'
16
- services:
17
- zookeeper:
18
- image: wurstmeister/zookeeper
19
- ports:
20
- - "2181:2181"
21
- restart: unless-stopped
22
-
23
- kafka:
24
- image: wurstmeister/kafka
25
- ports:
26
- - "9092:9092"
27
- environment:
28
- DOCKER_API_VERSION: 1.22
29
- KAFKA_ADVERTISED_HOST_NAME: 192.168.14.92
30
- KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
31
- KAFKA_CREATE_TOPICS: "topic-name2:3:1"
32
- KAFKA_LOG_RETENTION_MS: 86400000
33
- KAFKA_LOG_RETENTION_BYTES: -1
34
- volumes:
35
- - /var/run/docker.sock:/var/run/docker.sock
36
- restart: unless-stopped
37
-
38
-
39
- kafka example server #02 - Docker Compose File
40
- ----------------------------------------------
41
- version: "3.9" # optional since v1.27.0
42
-
43
- networks:
44
- app-tier:
45
- driver: bridge
46
-
47
- services:
48
- kafka:
49
- image: 'bitnami/kafka:latest'
50
- ports:
51
- - '9092:9092'
52
- networks:
53
- - app-tier
54
- environment:
55
- - ALLOW_PLAINTEXT_LISTENER=yes
56
- - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
57
- - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.14.92:9092
58
-
59
- */
60
- const stsutils_1 = require("@nsshunt/stsutils");
61
- const kafkajs_1 = require("kafkajs");
62
- const uuid_1 = require("uuid");
63
- const node_fs_1 = __importDefault(require("node:fs"));
64
- const kafkaconsumer_1 = require("./kafkaconsumer");
65
- const kafkaproducer_1 = require("./kafkaproducer");
66
- const net_1 = __importDefault(require("net"));
67
- const tls_1 = __importDefault(require("tls"));
68
- const chalk_1 = __importDefault(require("chalk"));
69
- const KEEP_ALIVE_DELAY = 60000; //@@ in ms
70
- class KafkaManager extends stsutils_1.STSOptionsBase {
71
- #kafka;
72
- constructor(options) {
73
- super(options);
74
- const kc = {
75
- clientId: options.clientId,
76
- brokers: options.brokers, //brokers: ['localhost:9092', 'kafka2:9092'],
77
- connectionTimeout: options.connectionTimeout,
78
- requestTimeout: options.requestTimeout
79
- };
80
- // NOTHING, ERROR, WARN, INFO, and DEBUG. INFO is configured by default.
81
- switch (options.logLevel) {
82
- case 'NOTHING':
83
- kc.logLevel = kafkajs_1.logLevel.NOTHING;
84
- break;
85
- case 'ERROR':
86
- kc.logLevel = kafkajs_1.logLevel.ERROR;
87
- break;
88
- case 'WARN':
89
- kc.logLevel = kafkajs_1.logLevel.WARN;
90
- break;
91
- case 'INFO':
92
- kc.logLevel = kafkajs_1.logLevel.INFO;
93
- break;
94
- case 'DEBUG':
95
- kc.logLevel = kafkajs_1.logLevel.DEBUG;
96
- break;
97
- default:
98
- kc.logLevel = kafkajs_1.logLevel.NOTHING;
99
- }
100
- if (options.useSSL && options.ssl) {
101
- kc.ssl = {
102
- ca: [node_fs_1.default.readFileSync(options.ssl.cafile, { encoding: 'utf8' })],
103
- key: node_fs_1.default.readFileSync(options.ssl.keyfile, { encoding: 'utf8' }),
104
- cert: node_fs_1.default.readFileSync(options.ssl.certfileFile, { encoding: 'utf8' }),
105
- };
106
- }
107
- if (options.keepAlive) {
108
- //const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
109
- const myCustomSocketFactory = (config) => {
110
- const socket = config.ssl
111
- ? tls_1.default.connect(Object.assign({ host: config.host, port: config.port }, !net_1.default.isIP(config.host) ? { servername: config.host } : {}, config.ssl), config.onConnect)
112
- : net_1.default.connect({ host: config.host, port: config.port }, config.onConnect);
113
- socket.setKeepAlive(true, options.keepAlive);
114
- return socket;
115
- };
116
- kc.socketFactory = myCustomSocketFactory;
117
- }
118
- this.#kafka = new kafkajs_1.Kafka(kc);
119
- }
120
- #LogErrorMessage(message) {
121
- this.options?.logger.error(message);
122
- }
123
- #RaiseError = (msg, errorCb) => {
124
- this.#LogErrorMessage(chalk_1.default.red(msg));
125
- errorCb(msg);
126
- };
127
- get kafka() {
128
- return this.#kafka;
129
- }
130
- CreateProducer() {
131
- return new kafkaproducer_1.KafkaProducer({
132
- kafka: this.#kafka,
133
- id: (0, uuid_1.v4)(),
134
- logger: this.options?.logger
135
- });
136
- }
137
- CreateConsumer(groupId) {
138
- return new kafkaconsumer_1.KafkaConsumer({
139
- kafka: this.#kafka,
140
- id: (0, uuid_1.v4)(),
141
- groupId,
142
- logger: this.options?.logger
143
- });
144
- }
145
- CreateTopic = async (topic, partitions, errorCb) => {
146
- try {
147
- const admin = this.#kafka.admin();
148
- await admin.connect();
149
- const result = await admin.createTopics({
150
- validateOnly: false,
151
- waitForLeaders: true,
152
- timeout: this.options?.timeout,
153
- topics: [
154
- {
155
- topic: topic,
156
- numPartitions: partitions, // default: -1 (uses broker `num.partitions` configuration)
157
- //replicationFactor: <Number>, // default: -1 (uses broker `default.replication.factor` configuration)
158
- //replicaAssignment: <Array>, // Example: [{ partition: 0, replicas: [0,1,2] }] - default: []
159
- //configEntries: <Array> // Example: [{ name: 'cleanup.policy', value: 'compact' }] - default: []
160
- }
161
- ]
162
- });
163
- await admin.disconnect();
164
- return result;
165
- }
166
- catch (error) {
167
- this.#RaiseError(`KafkaManager:CreateTopic(): Error: [${error}]`, errorCb);
168
- return false;
169
- }
170
- };
171
- }
172
- exports.KafkaManager = KafkaManager;
173
- //# sourceMappingURL=kafkamanager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":"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"}
@@ -1,97 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.KafkaProducer = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- class KafkaProducer {
9
- #options;
10
- #id;
11
- #producer;
12
- #kafka;
13
- #connected = false;
14
- constructor(options) {
15
- this.#options = options;
16
- this.#id = this.#options.id;
17
- this.#kafka = this.#options.kafka;
18
- this.#producer = this.#kafka.producer();
19
- }
20
- #LogErrorMessage(message) {
21
- this.#options.logger.error(message);
22
- }
23
- #RaiseError = (msg, errorCb) => {
24
- this.#LogErrorMessage(chalk_1.default.red(msg));
25
- errorCb(msg);
26
- };
27
- get producer() {
28
- return this.#producer;
29
- }
30
- get id() {
31
- return this.#id;
32
- }
33
- async Connect(errorCb) {
34
- if (!this.#connected) {
35
- try {
36
- await this.#producer.connect();
37
- this.#connected = true;
38
- }
39
- catch (error) {
40
- this.#RaiseError(`${process.pid}:KafkaProducer:Connect(): Error: [${error}]`, errorCb);
41
- }
42
- }
43
- }
44
- async Disconnect(errorCb) {
45
- if (this.#connected) {
46
- try {
47
- await this.#producer.disconnect();
48
- this.#connected = false;
49
- }
50
- catch (error) {
51
- this.#RaiseError(`${process.pid}:KafkaProducer:Disconnect(): Error: [${error}]`, errorCb);
52
- }
53
- }
54
- }
55
- SendMessage = async (topic, message, errorCb) => {
56
- if (this.#connected) {
57
- try {
58
- return this.#producer.send({
59
- topic,
60
- messages: [message]
61
- });
62
- }
63
- catch (error) {
64
- this.#LogErrorMessage(chalk_1.default.red(`${process.pid}:KafkaProducer:SendMessage(): Error: [${error}]`));
65
- return [];
66
- }
67
- }
68
- else {
69
- await this.Connect((error) => {
70
- this.#RaiseError(`${process.pid}:KafkaProducer:SendMessage(): Could not producer.connect, Error: [${error}]`, errorCb);
71
- });
72
- return [];
73
- }
74
- };
75
- SendMessages = async (topic, messages, errorCb) => {
76
- if (this.#connected) {
77
- try {
78
- return this.#producer.send({
79
- topic,
80
- messages
81
- });
82
- }
83
- catch (error) {
84
- this.#LogErrorMessage(chalk_1.default.red(`${process.pid}:KafkaProducer:SendMessages(): Error: [${error}]`));
85
- return [];
86
- }
87
- }
88
- else {
89
- await this.Connect((error) => {
90
- this.#RaiseError(`${process.pid}:KafkaProducer:SendMessages(): Could not producer.connect, Error: [${error}]`, errorCb);
91
- });
92
- return [];
93
- }
94
- };
95
- }
96
- exports.KafkaProducer = KafkaProducer;
97
- //# sourceMappingURL=kafkaproducer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kafkaproducer.js","sourceRoot":"","sources":["../../src/kafka/kafkaproducer.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BROKERS = exports.CLIENT_ID = exports.GROUP_ID = exports.TIMEOUT = exports.PARTITIONS = exports.TOPIC = void 0;
4
- exports.TOPIC = 'appframework-test-logs';
5
- exports.PARTITIONS = 3;
6
- exports.TIMEOUT = 5000;
7
- exports.GROUP_ID = 'my-group';
8
- exports.CLIENT_ID = 'my-app';
9
- exports.BROKERS = ['192.168.14.92:9092'];
10
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/kafkatesting/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,KAAK,GAAG,wBAAwB,CAAC;AACjC,QAAA,UAAU,GAAG,CAAC,CAAC;AACf,QAAA,OAAO,GAAG,IAAI,CAAC;AAEf,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEtB,QAAA,SAAS,GAAG,QAAQ,CAAC;AAErB,QAAA,OAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC"}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
7
- const config_1 = require("./config");
8
- const kafkamanager_1 = require("./../kafka/kafkamanager");
9
- const winston_1 = __importDefault(require("winston"));
10
- async function Sleep(milliseconds = 1000) {
11
- return new Promise(resolve => setTimeout(resolve, milliseconds));
12
- }
13
- winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple());
14
- const logger = winston_1.default.createLogger({
15
- level: 'silly',
16
- format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
17
- transports: [
18
- new winston_1.default.transports.Console()
19
- ]
20
- });
21
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
- const LogErrorMessage = (message) => {
23
- logger.error(message);
24
- };
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- const LogInfoMessage = (message) => {
27
- logger.info(message);
28
- };
29
- const km = new kafkamanager_1.KafkaManager({
30
- clientId: config_1.CLIENT_ID + process.env.CLIENT_ID,
31
- brokers: config_1.BROKERS,
32
- adminTimeout: config_1.TIMEOUT,
33
- connectionTimeout: config_1.TIMEOUT,
34
- requestTimeout: config_1.TIMEOUT,
35
- logLevel: 'NOTHING',
36
- useSSL: false,
37
- logger
38
- });
39
- const runme = async () => {
40
- const fromBeginning = false;
41
- const consumer = km.CreateConsumer(config_1.GROUP_ID + process.env.GROUP_ID);
42
- await consumer.Connect((error) => {
43
- LogErrorMessage(`Connect(): Error: [${error}]`);
44
- });
45
- await consumer.Subscribe([config_1.TOPIC], fromBeginning, (error) => {
46
- LogErrorMessage(`Subscribe(): Error: [${error}]`);
47
- });
48
- await consumer.StartConsumingMessages(true, (topic, partition, message, heartbeat, pause) => {
49
- const { key, value, headers } = message;
50
- LogInfoMessage({
51
- key,
52
- partition,
53
- value,
54
- headers
55
- });
56
- }, (error) => {
57
- LogErrorMessage(`StartConsumingMessages(): Error: [${error}]`);
58
- });
59
- /*
60
- await consumer.StartConsumingMessages(true, (topic: string, key: string, partition: number, value: string, headers: JSONObject | undefined) => {
61
- LogInfoMessage({
62
- key,
63
- partition,
64
- value,
65
- headers
66
- });
67
- }, (error) => {
68
- LogErrorMessage(`StartConsumingMessages(): Error: [${error}]`);
69
- });
70
- */
71
- await consumer.Stop((error) => {
72
- LogErrorMessage(`Stop(): Error: [${error}]`);
73
- });
74
- await consumer.Subscribe(['zzz'], fromBeginning, (error) => {
75
- LogErrorMessage(`Subscribe(): Error: [${error}]`);
76
- });
77
- await consumer.StartConsumingMessages(true, (topic, partition, message, heartbeat, pause) => {
78
- const { key, value, headers } = message;
79
- LogInfoMessage({
80
- key,
81
- partition,
82
- value,
83
- headers
84
- });
85
- }, (error) => {
86
- LogErrorMessage(`StartConsumingMessages(): Error: [${error}]`);
87
- });
88
- await consumer.Stop((error) => {
89
- LogErrorMessage(`Stop(): Error: [${error}]`);
90
- });
91
- await consumer.Subscribe(['yyy'], fromBeginning, (error) => {
92
- LogErrorMessage(`Subscribe(): Error: [${error}]`);
93
- });
94
- await consumer.StartConsumingMessages(true, (topic, partition, message, heartbeat, pause) => {
95
- const { key, value, headers } = message;
96
- /*
97
- this.#LogInfoMessage({
98
- key,
99
- partition,
100
- value,
101
- headers
102
- });
103
- */
104
- LogInfoMessage(`key: [${key}] value: [${value}] partition: [${partition}] headers: [${headers}]`);
105
- }, (error) => {
106
- LogErrorMessage(`StartConsumingMessages(): Error: [${error}]`);
107
- });
108
- //await km.Subscribe(['zzz'], cb);
109
- process.on("SIGINT", async () => {
110
- LogInfoMessage('=========SIGTERM START =======================');
111
- await consumer.Disconnect((error) => {
112
- LogErrorMessage(`Disconnect(): Error: [${error}]`);
113
- });
114
- LogInfoMessage('=========SIGTERM END =======================');
115
- process.exit();
116
- });
117
- let iteration = 0;
118
- for (;;) {
119
- LogInfoMessage('sleep: ' + iteration++);
120
- await Sleep(1000);
121
- }
122
- };
123
- /*
124
- const errorTypes = ['unhandledRejection', 'uncaughtException']
125
- const signalTraps = ['SIGTERM', 'SIGINT', 'SIGUSR2']
126
-
127
- errorTypes.forEach(type => {
128
- process.on(type, async () => {
129
- try {
130
- this.#LogInfoMessage(`process.on ${type}`)
131
- this.#LogInfoMessage('=========consumer.disconnect() START =======================')
132
- await consumer.disconnect()
133
- this.#LogInfoMessage('=========consumer.disconnect() END =======================')
134
- process.exit(0)
135
- } catch (_) {
136
- process.exit(1)
137
- }
138
- })
139
- })
140
-
141
- signalTraps.forEach(type => {
142
- process.once(type, async () => {
143
- try {
144
- this.#LogInfoMessage('=========consumer.disconnect() START [2] =======================')
145
- await consumer.disconnect()
146
- this.#LogInfoMessage('=========consumer.disconnect() END [2] =======================')
147
- } finally {
148
- process.kill(process.pid, type)
149
- }
150
- })
151
- })
152
- */
153
- runme().catch(e => LogErrorMessage(`[example/producer] ${e.message}`));
154
- //# sourceMappingURL=consume.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/kafkatesting/consume.ts"],"names":[],"mappings":"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"}