@nsshunt/stsappframework 2.19.280 → 2.19.281
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/kafka/kafkamanager.js +45 -14
- package/dist/kafka/kafkamanager.js.map +1 -1
- package/dist/kafkatesting/consume.js +5 -1
- package/dist/kafkatesting/consume.js.map +1 -1
- package/dist/kafkatesting/produce.js +5 -1
- package/dist/kafkatesting/produce.js.map +1 -1
- package/package.json +2 -2
- package/src/kafka/kafkamanager.ts +67 -25
- package/src/kafkatesting/consume.ts +5 -1
- package/src/kafkatesting/produce.ts +5 -1
- package/types/kafka/kafkamanager.d.ts +12 -1
- package/types/kafka/kafkamanager.d.ts.map +1 -1
|
@@ -60,30 +60,61 @@ services:
|
|
|
60
60
|
const stsutils_1 = require("@nsshunt/stsutils");
|
|
61
61
|
const kafkajs_1 = require("kafkajs");
|
|
62
62
|
const uuid_1 = require("uuid");
|
|
63
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
63
64
|
const kafkaconsumer_1 = require("./kafkaconsumer");
|
|
64
65
|
const kafkaproducer_1 = require("./kafkaproducer");
|
|
65
66
|
const net_1 = __importDefault(require("net"));
|
|
66
67
|
const tls_1 = __importDefault(require("tls"));
|
|
67
|
-
const KEEP_ALIVE_DELAY = 60000;
|
|
68
|
-
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
69
|
-
const myCustomSocketFactory = (config) => {
|
|
70
|
-
const socket = config.ssl
|
|
71
|
-
? 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)
|
|
72
|
-
: net_1.default.connect({ host: config.host, port: config.port }, config.onConnect);
|
|
73
|
-
socket.setKeepAlive(true, KEEP_ALIVE_DELAY);
|
|
74
|
-
return socket;
|
|
75
|
-
};
|
|
68
|
+
const KEEP_ALIVE_DELAY = 60000; //@@ in ms
|
|
76
69
|
class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
77
70
|
#kafka;
|
|
78
71
|
constructor(options) {
|
|
79
72
|
super(options);
|
|
80
|
-
|
|
73
|
+
const kc = {
|
|
81
74
|
clientId: options.clientId,
|
|
82
75
|
brokers: options.brokers,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
connectionTimeout: options.connectionTimeout,
|
|
77
|
+
requestTimeout: options.requestTimeout
|
|
78
|
+
};
|
|
79
|
+
// NOTHING, ERROR, WARN, INFO, and DEBUG. INFO is configured by default.
|
|
80
|
+
switch (options.logLevel) {
|
|
81
|
+
case 'NOTHING':
|
|
82
|
+
kc.logLevel = kafkajs_1.logLevel.NOTHING;
|
|
83
|
+
break;
|
|
84
|
+
case 'ERROR':
|
|
85
|
+
kc.logLevel = kafkajs_1.logLevel.ERROR;
|
|
86
|
+
break;
|
|
87
|
+
case 'WARN':
|
|
88
|
+
kc.logLevel = kafkajs_1.logLevel.WARN;
|
|
89
|
+
break;
|
|
90
|
+
case 'INFO':
|
|
91
|
+
kc.logLevel = kafkajs_1.logLevel.INFO;
|
|
92
|
+
break;
|
|
93
|
+
case 'DEBUG':
|
|
94
|
+
kc.logLevel = kafkajs_1.logLevel.DEBUG;
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
kc.logLevel = kafkajs_1.logLevel.NOTHING;
|
|
98
|
+
}
|
|
99
|
+
if (options.useSSL && options.ssl) {
|
|
100
|
+
kc.ssl = {
|
|
101
|
+
ca: [node_fs_1.default.readFileSync(options.ssl.cafile, { encoding: 'utf8' })],
|
|
102
|
+
key: node_fs_1.default.readFileSync(options.ssl.keyfile, { encoding: 'utf8' }),
|
|
103
|
+
cert: node_fs_1.default.readFileSync(options.ssl.certfileFile, { encoding: 'utf8' }),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (options.keepAlive) {
|
|
107
|
+
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
108
|
+
const myCustomSocketFactory = (config) => {
|
|
109
|
+
const socket = config.ssl
|
|
110
|
+
? 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)
|
|
111
|
+
: net_1.default.connect({ host: config.host, port: config.port }, config.onConnect);
|
|
112
|
+
socket.setKeepAlive(true, options.keepAlive);
|
|
113
|
+
return socket;
|
|
114
|
+
};
|
|
115
|
+
kc.socketFactory = myCustomSocketFactory;
|
|
116
|
+
}
|
|
117
|
+
this.#kafka = new kafkajs_1.Kafka(kc);
|
|
87
118
|
}
|
|
88
119
|
CreateProducer() {
|
|
89
120
|
return new kafkaproducer_1.KafkaProducer(this.#kafka, (0, uuid_1.v4)());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":";;;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE;AACF,gDAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,11 @@ async function Sleep(milliseconds = 1000) {
|
|
|
9
9
|
const km = new kafkamanager_1.KafkaManager({
|
|
10
10
|
clientId: config_1.CLIENT_ID + process.env.CLIENT_ID,
|
|
11
11
|
brokers: config_1.BROKERS,
|
|
12
|
-
|
|
12
|
+
adminTimeout: config_1.TIMEOUT,
|
|
13
|
+
connectionTimeout: config_1.TIMEOUT,
|
|
14
|
+
requestTimeout: config_1.TIMEOUT,
|
|
15
|
+
logLevel: 'NOTHING',
|
|
16
|
+
useSSL: false
|
|
13
17
|
});
|
|
14
18
|
const runme = async () => {
|
|
15
19
|
const fromBeginning = false;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/kafkatesting/consume.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,11 @@ async function Sleep(milliseconds = 1000) {
|
|
|
61
61
|
const km = new kafkamanager_1.KafkaManager({
|
|
62
62
|
clientId: config_1.CLIENT_ID + process.env.CLIENT_ID,
|
|
63
63
|
brokers: config_1.BROKERS,
|
|
64
|
-
|
|
64
|
+
adminTimeout: config_1.TIMEOUT,
|
|
65
|
+
connectionTimeout: config_1.TIMEOUT,
|
|
66
|
+
requestTimeout: config_1.TIMEOUT,
|
|
67
|
+
logLevel: 'NOTHING',
|
|
68
|
+
useSSL: false
|
|
65
69
|
});
|
|
66
70
|
const runme = async () => {
|
|
67
71
|
await km.CreateTopic(config_1.TOPIC, config_1.PARTITIONS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"produce.js","sourceRoot":"","sources":["../../src/kafkatesting/produce.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDE;AACF,qCAAyE;AAEzE,0DAAsD;AAEtD,kBAAe;AAEf,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,
|
|
1
|
+
{"version":3,"file":"produce.js","sourceRoot":"","sources":["../../src/kafkatesting/produce.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsappframework",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.281",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typescript": "^5.2.2"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@nsshunt/stsconfig": "^1.25.
|
|
49
|
+
"@nsshunt/stsconfig": "^1.25.55",
|
|
50
50
|
"@nsshunt/stsdatamanagement": "^1.17.124",
|
|
51
51
|
"@nsshunt/stsinstrumentation": "^6.11.94",
|
|
52
52
|
"@nsshunt/stspublisherserver": "^1.15.105",
|
|
@@ -53,9 +53,10 @@ services:
|
|
|
53
53
|
*/
|
|
54
54
|
import { STSOptionsBase } from '@nsshunt/stsutils'
|
|
55
55
|
|
|
56
|
-
import { Kafka, logLevel } from 'kafkajs'
|
|
56
|
+
import { Kafka, KafkaConfig, logLevel } from 'kafkajs'
|
|
57
57
|
|
|
58
58
|
import { v4 as uuidv4 } from 'uuid';
|
|
59
|
+
import fs from 'node:fs'
|
|
59
60
|
|
|
60
61
|
import { KafkaConsumer } from './kafkaconsumer'
|
|
61
62
|
import { KafkaProducer } from './kafkaproducer'
|
|
@@ -63,12 +64,24 @@ import { KafkaProducer } from './kafkaproducer'
|
|
|
63
64
|
import net from 'net'
|
|
64
65
|
import tls from 'tls'
|
|
65
66
|
|
|
66
|
-
const KEEP_ALIVE_DELAY = 60000
|
|
67
|
+
const KEEP_ALIVE_DELAY = 60000 //@@ in ms
|
|
67
68
|
|
|
69
|
+
// https://kafka.js.org/docs/configuration
|
|
68
70
|
export interface IKafkaManagerConfig {
|
|
69
|
-
clientId: string
|
|
70
|
-
brokers: string[]
|
|
71
|
-
|
|
71
|
+
clientId: string // A logical identifier of an application. Can be used by brokers to apply quotas or trace requests to a specific application. Example: booking-events-processor.
|
|
72
|
+
brokers: string[] // List of Kafka brokers
|
|
73
|
+
adminTimeout: number // Time in milliseconds to wait for a successful admin operation. The default value is: 5000.
|
|
74
|
+
connectionTimeout: number // Time in milliseconds to wait for a successful connection. The default value is: 1000.
|
|
75
|
+
requestTimeout: number // Time in milliseconds to wait for a successful request. The default value is: 30000.
|
|
76
|
+
logLevel: string // There are 5 log levels available: NOTHING, ERROR, WARN, INFO, and DEBUG. INFO is configured by default.
|
|
77
|
+
keepAlive?: number // When specified, the number of ms for socket keep alive processing.
|
|
78
|
+
useSSL: boolean // Use SSL
|
|
79
|
+
ssl?: { // Must be specified if useSSL is true
|
|
80
|
+
rejectUnauthorized: boolean
|
|
81
|
+
cafile: string
|
|
82
|
+
keyfile: string
|
|
83
|
+
certfileFile: string
|
|
84
|
+
}
|
|
72
85
|
}
|
|
73
86
|
|
|
74
87
|
// https://kafka.js.org/docs/configuration
|
|
@@ -80,33 +93,62 @@ declare interface ICustomSocketFactory {
|
|
|
80
93
|
onConnect: any
|
|
81
94
|
}
|
|
82
95
|
|
|
83
|
-
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
84
|
-
const myCustomSocketFactory = (config: ICustomSocketFactory) => {
|
|
85
|
-
const socket = config.ssl
|
|
86
|
-
? tls.connect(
|
|
87
|
-
Object.assign({ host: config.host, port: config.port }, !net.isIP(config.host) ? { servername: config.host } : {}, config.ssl),
|
|
88
|
-
config.onConnect
|
|
89
|
-
)
|
|
90
|
-
: net.connect({ host: config.host, port: config.port }, config.onConnect)
|
|
91
|
-
|
|
92
|
-
socket.setKeepAlive(true, KEEP_ALIVE_DELAY)
|
|
93
|
-
|
|
94
|
-
return socket
|
|
95
|
-
}
|
|
96
|
-
|
|
97
96
|
export class KafkaManager extends STSOptionsBase {
|
|
98
97
|
#kafka: Kafka
|
|
99
98
|
|
|
100
99
|
constructor(options: IKafkaManagerConfig) {
|
|
101
100
|
super(options);
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
const kc: KafkaConfig = {
|
|
104
103
|
clientId: options.clientId,
|
|
105
|
-
brokers: options.brokers,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
brokers: options.brokers, //brokers: ['localhost:9092', 'kafka2:9092'],
|
|
105
|
+
connectionTimeout: options.connectionTimeout,
|
|
106
|
+
requestTimeout: options.requestTimeout
|
|
107
|
+
}
|
|
108
|
+
// NOTHING, ERROR, WARN, INFO, and DEBUG. INFO is configured by default.
|
|
109
|
+
switch (options.logLevel) {
|
|
110
|
+
case 'NOTHING' :
|
|
111
|
+
kc.logLevel = logLevel.NOTHING;
|
|
112
|
+
break;
|
|
113
|
+
case 'ERROR' :
|
|
114
|
+
kc.logLevel = logLevel.ERROR;
|
|
115
|
+
break;
|
|
116
|
+
case 'WARN' :
|
|
117
|
+
kc.logLevel = logLevel.WARN;
|
|
118
|
+
break;
|
|
119
|
+
case 'INFO' :
|
|
120
|
+
kc.logLevel = logLevel.INFO;
|
|
121
|
+
break;
|
|
122
|
+
case 'DEBUG' :
|
|
123
|
+
kc.logLevel = logLevel.DEBUG;
|
|
124
|
+
break;
|
|
125
|
+
default :
|
|
126
|
+
kc.logLevel = logLevel.NOTHING;
|
|
127
|
+
}
|
|
128
|
+
if (options.useSSL && options.ssl) {
|
|
129
|
+
kc.ssl = {
|
|
130
|
+
ca: [fs.readFileSync(options.ssl.cafile as string, { encoding: 'utf8'})],
|
|
131
|
+
key: fs.readFileSync(options.ssl.keyfile, { encoding: 'utf8'}),
|
|
132
|
+
cert: fs.readFileSync(options.ssl.certfileFile, { encoding: 'utf8'}),
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (options.keepAlive) {
|
|
136
|
+
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
137
|
+
const myCustomSocketFactory = (config: ICustomSocketFactory) => {
|
|
138
|
+
const socket = config.ssl
|
|
139
|
+
? tls.connect(
|
|
140
|
+
Object.assign({ host: config.host, port: config.port }, !net.isIP(config.host) ? { servername: config.host } : {}, config.ssl),
|
|
141
|
+
config.onConnect
|
|
142
|
+
)
|
|
143
|
+
: net.connect({ host: config.host, port: config.port }, config.onConnect)
|
|
144
|
+
|
|
145
|
+
socket.setKeepAlive(true, options.keepAlive)
|
|
146
|
+
return socket
|
|
147
|
+
}
|
|
148
|
+
kc.socketFactory = myCustomSocketFactory;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
this.#kafka = new Kafka(kc);
|
|
110
152
|
}
|
|
111
153
|
|
|
112
154
|
CreateProducer(): KafkaProducer {
|
|
@@ -11,7 +11,11 @@ async function Sleep(milliseconds = 1000) {
|
|
|
11
11
|
const km = new KafkaManager({
|
|
12
12
|
clientId: CLIENT_ID + process.env.CLIENT_ID,
|
|
13
13
|
brokers: BROKERS,
|
|
14
|
-
|
|
14
|
+
adminTimeout: TIMEOUT,
|
|
15
|
+
connectionTimeout: TIMEOUT,
|
|
16
|
+
requestTimeout: TIMEOUT,
|
|
17
|
+
logLevel: 'NOTHING',
|
|
18
|
+
useSSL: false
|
|
15
19
|
});
|
|
16
20
|
|
|
17
21
|
const runme = async () => {
|
|
@@ -63,7 +63,11 @@ async function Sleep(milliseconds = 1000) {
|
|
|
63
63
|
const km = new KafkaManager({
|
|
64
64
|
clientId: CLIENT_ID + process.env.CLIENT_ID,
|
|
65
65
|
brokers: BROKERS,
|
|
66
|
-
|
|
66
|
+
adminTimeout: TIMEOUT,
|
|
67
|
+
connectionTimeout: TIMEOUT,
|
|
68
|
+
requestTimeout: TIMEOUT,
|
|
69
|
+
logLevel: 'NOTHING',
|
|
70
|
+
useSSL: false
|
|
67
71
|
});
|
|
68
72
|
|
|
69
73
|
const runme = async () => {
|
|
@@ -4,7 +4,18 @@ import { KafkaProducer } from './kafkaproducer';
|
|
|
4
4
|
export interface IKafkaManagerConfig {
|
|
5
5
|
clientId: string;
|
|
6
6
|
brokers: string[];
|
|
7
|
-
|
|
7
|
+
adminTimeout: number;
|
|
8
|
+
connectionTimeout: number;
|
|
9
|
+
requestTimeout: number;
|
|
10
|
+
logLevel: string;
|
|
11
|
+
keepAlive?: number;
|
|
12
|
+
useSSL: boolean;
|
|
13
|
+
ssl?: {
|
|
14
|
+
rejectUnauthorized: boolean;
|
|
15
|
+
cafile: string;
|
|
16
|
+
keyfile: string;
|
|
17
|
+
certfileFile: string;
|
|
18
|
+
};
|
|
8
19
|
}
|
|
9
20
|
export declare class KafkaManager extends STSOptionsBase {
|
|
10
21
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../../src/kafka/kafkamanager.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAOlD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAQ/C,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE;QACJ,kBAAkB,EAAE,OAAO,CAAA;QAC3B,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,YAAY,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ;AAWD,qBAAa,YAAa,SAAQ,cAAc;;gBAGhC,OAAO,EAAE,mBAAmB;IAuDxC,cAAc,IAAI,aAAa;IAI/B,cAAc,CAAC,OAAO,EAAE,MAAM;IAI9B,WAAW,UAAiB,MAAM,cAAc,MAAM,KAAG,QAAQ,IAAI,CAAC,CAkBrE;CACJ"}
|