@fluojs/microservices 1.0.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +64 -6
- package/README.md +64 -6
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +2 -1
- package/dist/service.d.ts +15 -5
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +96 -38
- package/dist/status.d.ts +3 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +10 -2
- package/dist/transports/grpc-transport.d.ts +4 -2
- package/dist/transports/grpc-transport.d.ts.map +1 -1
- package/dist/transports/grpc-transport.js +241 -241
- package/dist/transports/kafka-transport.d.ts +9 -1
- package/dist/transports/kafka-transport.d.ts.map +1 -1
- package/dist/transports/kafka-transport.js +41 -21
- package/dist/transports/mqtt-transport.d.ts +1 -0
- package/dist/transports/mqtt-transport.d.ts.map +1 -1
- package/dist/transports/mqtt-transport.js +22 -1
- package/dist/transports/nats-transport.d.ts +3 -0
- package/dist/transports/nats-transport.d.ts.map +1 -1
- package/dist/transports/nats-transport.js +83 -30
- package/dist/transports/rabbitmq-transport.d.ts +10 -1
- package/dist/transports/rabbitmq-transport.d.ts.map +1 -1
- package/dist/transports/rabbitmq-transport.js +80 -30
- package/dist/transports/redis-streams-transport.d.ts +18 -0
- package/dist/transports/redis-streams-transport.d.ts.map +1 -1
- package/dist/transports/redis-streams-transport.js +46 -3
- package/dist/transports/redis-transport.d.ts +1 -1
- package/dist/transports/redis-transport.d.ts.map +1 -1
- package/dist/transports/redis-transport.js +32 -16
- package/dist/transports/tcp-transport.d.ts +1 -0
- package/dist/transports/tcp-transport.d.ts.map +1 -1
- package/dist/transports/tcp-transport.js +45 -44
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -7
|
@@ -29,9 +29,12 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
29
29
|
messageGroupLeaseRegistered = false;
|
|
30
30
|
ownsMessageGroup = false;
|
|
31
31
|
pending = new Map();
|
|
32
|
+
pendingReclaimFailureGroups = new Set();
|
|
33
|
+
pendingReclaimStartIds = new Map();
|
|
32
34
|
pollPromises = [];
|
|
33
35
|
namespace;
|
|
34
36
|
consumerGroup;
|
|
37
|
+
pendingReclaimIdleMs;
|
|
35
38
|
requestTimeoutMs;
|
|
36
39
|
pollBlockMs;
|
|
37
40
|
messageRetentionMaxLen;
|
|
@@ -48,6 +51,7 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
48
51
|
this.consumerId = crypto.randomUUID();
|
|
49
52
|
this.namespace = options.namespace ?? 'fluo:streams';
|
|
50
53
|
this.consumerGroup = options.consumerGroup ?? 'fluo-handlers';
|
|
54
|
+
this.pendingReclaimIdleMs = options.pendingReclaimIdleMs ?? 60_000;
|
|
51
55
|
this.requestTimeoutMs = options.requestTimeoutMs ?? 3_000;
|
|
52
56
|
this.pollBlockMs = options.pollBlockMs ?? 500;
|
|
53
57
|
this.messageRetentionMaxLen = options.messageRetentionMaxLen;
|
|
@@ -216,12 +220,22 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
216
220
|
this.closing = true;
|
|
217
221
|
this.closePromise = (async () => {
|
|
218
222
|
let closeError;
|
|
223
|
+
let listenError;
|
|
219
224
|
if (this.listenPromise) {
|
|
220
|
-
|
|
225
|
+
try {
|
|
226
|
+
await this.listenPromise;
|
|
227
|
+
} catch (error) {
|
|
228
|
+
listenError = error;
|
|
229
|
+
}
|
|
221
230
|
}
|
|
222
231
|
try {
|
|
223
232
|
const settled = await Promise.allSettled(this.pollPromises);
|
|
224
|
-
|
|
233
|
+
let shouldDestroyMessageGroup = false;
|
|
234
|
+
try {
|
|
235
|
+
shouldDestroyMessageGroup = await this.releaseMessageGroupLease();
|
|
236
|
+
} catch (error) {
|
|
237
|
+
closeError ??= error;
|
|
238
|
+
}
|
|
225
239
|
for (const result of settled) {
|
|
226
240
|
if (result.status === 'rejected') {
|
|
227
241
|
closeError ??= result.reason;
|
|
@@ -254,11 +268,16 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
254
268
|
this.handler = undefined;
|
|
255
269
|
this.messageGroupLeaseRegistered = false;
|
|
256
270
|
this.ownsMessageGroup = false;
|
|
271
|
+
this.pendingReclaimFailureGroups.clear();
|
|
272
|
+
this.pendingReclaimStartIds.clear();
|
|
257
273
|
this.pollPromises = [];
|
|
258
274
|
for (const pending of [...this.pending.values()]) {
|
|
259
275
|
pending.reject(new Error('Redis Streams microservice transport closed before response.'));
|
|
260
276
|
}
|
|
261
277
|
}
|
|
278
|
+
if (listenError) {
|
|
279
|
+
throw listenError;
|
|
280
|
+
}
|
|
262
281
|
if (closeError) {
|
|
263
282
|
throw closeError;
|
|
264
283
|
}
|
|
@@ -329,7 +348,8 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
329
348
|
async pollStream(stream, group) {
|
|
330
349
|
while (!this.closing) {
|
|
331
350
|
try {
|
|
332
|
-
const
|
|
351
|
+
const reclaimedEntries = await this.reclaimPendingEntries(stream, group);
|
|
352
|
+
const entries = reclaimedEntries.length > 0 ? reclaimedEntries : await this.options.readerClient.xreadgroup(group, this.consumerId, [stream], {
|
|
333
353
|
blockMs: this.pollBlockMs,
|
|
334
354
|
count: 10
|
|
335
355
|
});
|
|
@@ -356,6 +376,29 @@ export class RedisStreamsMicroserviceTransport {
|
|
|
356
376
|
}
|
|
357
377
|
}
|
|
358
378
|
}
|
|
379
|
+
async reclaimPendingEntries(stream, group) {
|
|
380
|
+
const {
|
|
381
|
+
readerClient
|
|
382
|
+
} = this.options;
|
|
383
|
+
if (stream === this.responseStream || this.pendingReclaimIdleMs <= 0 || !readerClient.xautoclaim) {
|
|
384
|
+
return [];
|
|
385
|
+
}
|
|
386
|
+
const groupKey = `${stream}::${group}`;
|
|
387
|
+
try {
|
|
388
|
+
const result = await readerClient.xautoclaim(stream, group, this.consumerId, this.pendingReclaimIdleMs, this.pendingReclaimStartIds.get(groupKey) ?? '0-0', {
|
|
389
|
+
count: 10
|
|
390
|
+
});
|
|
391
|
+
this.pendingReclaimFailureGroups.delete(groupKey);
|
|
392
|
+
this.pendingReclaimStartIds.set(groupKey, result.nextStartId);
|
|
393
|
+
return result.entries;
|
|
394
|
+
} catch (error) {
|
|
395
|
+
if (!this.pendingReclaimFailureGroups.has(groupKey)) {
|
|
396
|
+
this.logger?.error('Redis Streams pending reclaim failed; continuing normal consumption.', error, 'RedisStreamsMicroserviceTransport');
|
|
397
|
+
this.pendingReclaimFailureGroups.add(groupKey);
|
|
398
|
+
}
|
|
399
|
+
return [];
|
|
400
|
+
}
|
|
401
|
+
}
|
|
359
402
|
async handleStreamEntry(stream, message) {
|
|
360
403
|
if (stream === this.messageStream) {
|
|
361
404
|
await this.handleInboundRequest(message);
|
|
@@ -10,7 +10,6 @@ interface RedisLike {
|
|
|
10
10
|
export interface RedisPubSubMicroserviceTransportOptions {
|
|
11
11
|
namespace?: string;
|
|
12
12
|
publishClient: RedisLike;
|
|
13
|
-
requestTimeoutMs?: number;
|
|
14
13
|
subscribeClient: RedisLike;
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
@@ -30,6 +29,7 @@ export declare class RedisPubSubMicroserviceTransport implements MicroserviceTra
|
|
|
30
29
|
private readonly messageListener;
|
|
31
30
|
private readonly namespace;
|
|
32
31
|
private logEventHandlerFailure;
|
|
32
|
+
private logMalformedFrame;
|
|
33
33
|
/**
|
|
34
34
|
* Creates a Redis Pub/Sub transport using dedicated publish and subscribe clients.
|
|
35
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-transport.d.ts","sourceRoot":"","sources":["../../src/transports/redis-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"redis-transport.d.ts","sourceRoot":"","sources":["../../src/transports/redis-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBxG,UAAU,SAAS;IACjB,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IACtF,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IACpF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,WAAW,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,wEAAwE;AACxE,MAAM,WAAW,uCAAuC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,qBAAa,gCAAiC,YAAW,qBAAqB;IAmChE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlCpC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE9B;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,iBAAiB;IAczB;;;;OAIG;gBAC0B,OAAO,EAAE,uCAAuC;IAI7E,SAAS,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI;IAIpD;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCtD;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;;;;;;;OAQG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOrF;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAsCd,cAAc;IA8B5B,OAAO,KAAK,YAAY,GAEvB;CACF"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { logTransportEventHandlerFailure } from './event-handler-logger.js';
|
|
2
|
+
function isRedisPubSubMessage(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value) && 'kind' in value && value.kind === 'event' && 'pattern' in value && typeof value.pattern === 'string';
|
|
4
|
+
}
|
|
2
5
|
|
|
3
6
|
/** Options for configuring the Redis Pub/Sub microservice transport. */
|
|
4
7
|
|
|
@@ -22,6 +25,17 @@ export class RedisPubSubMicroserviceTransport {
|
|
|
22
25
|
logEventHandlerFailure(error) {
|
|
23
26
|
logTransportEventHandlerFailure(this.logger, 'RedisPubSubMicroserviceTransport', error);
|
|
24
27
|
}
|
|
28
|
+
logMalformedFrame(error) {
|
|
29
|
+
const logger = this.logger;
|
|
30
|
+
if (!logger) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
logger.error('Malformed frame discarded.', error, 'RedisPubSubMicroserviceTransport');
|
|
35
|
+
} catch {
|
|
36
|
+
// Redis callbacks must remain isolated when the configured logger fails.
|
|
37
|
+
}
|
|
38
|
+
}
|
|
25
39
|
|
|
26
40
|
/**
|
|
27
41
|
* Creates a Redis Pub/Sub transport using dedicated publish and subscribe clients.
|
|
@@ -147,27 +161,29 @@ export class RedisPubSubMicroserviceTransport {
|
|
|
147
161
|
}
|
|
148
162
|
}
|
|
149
163
|
async handleIncoming(channel, rawMessage) {
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
message = JSON.parse(rawMessage);
|
|
153
|
-
} catch {
|
|
164
|
+
if (!this.handler || channel !== this.eventChannel) {
|
|
154
165
|
return;
|
|
155
166
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
await this.handler({
|
|
162
|
-
kind: 'event',
|
|
163
|
-
pattern: message.pattern,
|
|
164
|
-
payload: message.payload
|
|
165
|
-
});
|
|
166
|
-
} catch (error) {
|
|
167
|
-
this.logEventHandlerFailure(error);
|
|
167
|
+
let message;
|
|
168
|
+
try {
|
|
169
|
+
const decoded = JSON.parse(rawMessage);
|
|
170
|
+
if (!isRedisPubSubMessage(decoded)) {
|
|
171
|
+
throw new Error('Redis Pub/Sub event frames must have kind "event" and a string pattern.');
|
|
168
172
|
}
|
|
173
|
+
message = decoded;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
this.logMalformedFrame(error);
|
|
169
176
|
return;
|
|
170
177
|
}
|
|
178
|
+
try {
|
|
179
|
+
await this.handler({
|
|
180
|
+
kind: 'event',
|
|
181
|
+
pattern: message.pattern,
|
|
182
|
+
payload: message.payload
|
|
183
|
+
});
|
|
184
|
+
} catch (error) {
|
|
185
|
+
this.logEventHandlerFailure(error);
|
|
186
|
+
}
|
|
171
187
|
}
|
|
172
188
|
get eventChannel() {
|
|
173
189
|
return `${this.namespace}:events`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../src/transports/tcp-transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAQ5F,8DAA8D;AAC9D,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../src/transports/tcp-transport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAQ5F,8DAA8D;AAC9D,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,qBAAqB;IAqBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IApBpC,yFAAyF;IACzF,QAAQ,CAAC,aAAa,QAAQ;IAE9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C;;;;OAIG;gBAC0B,OAAO,EAAE,+BAA+B;IAMrE;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAqBxC,cAAc;IAyB5B;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrF;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiDR,mBAAmB;YA8BnB,cAAc;IA2G5B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;YAUV,YAAY;IAyB1B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const DEFAULT_MAX_FRAME_BYTES = 1_048_576;
|
|
4
4
|
|
|
5
|
+
// allow: SIZE_OK — TCP framing and lifecycle form one transport state machine; splitting it is outside this focused fix.
|
|
5
6
|
/**
|
|
6
7
|
* Lightweight TCP transport for request-response messages and fire-and-forget events.
|
|
7
8
|
*
|
|
@@ -13,6 +14,7 @@ export class TcpMicroserviceTransport {
|
|
|
13
14
|
ownsResources = true;
|
|
14
15
|
boundPort;
|
|
15
16
|
closing = false;
|
|
17
|
+
closePromise;
|
|
16
18
|
handler;
|
|
17
19
|
listenPromise;
|
|
18
20
|
server;
|
|
@@ -117,40 +119,43 @@ export class TcpMicroserviceTransport {
|
|
|
117
119
|
*
|
|
118
120
|
* @returns A promise that resolves once the server is fully closed.
|
|
119
121
|
*/
|
|
120
|
-
|
|
122
|
+
close() {
|
|
121
123
|
this.closing = true;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
this.closePromise ??= (async () => {
|
|
125
|
+
let listenError;
|
|
126
|
+
if (this.listenPromise) {
|
|
127
|
+
try {
|
|
128
|
+
await this.listenPromise;
|
|
129
|
+
} catch (error) {
|
|
130
|
+
listenError = error;
|
|
131
|
+
}
|
|
128
132
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
for (const socket of this.sockets) {
|
|
134
|
+
socket.destroy();
|
|
135
|
+
}
|
|
136
|
+
this.sockets.clear();
|
|
137
|
+
if (!this.server?.listening) {
|
|
138
|
+
this.boundPort = undefined;
|
|
139
|
+
if (listenError) {
|
|
140
|
+
throw listenError;
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
await new Promise((resolve, reject) => {
|
|
145
|
+
this.server?.close(error => {
|
|
146
|
+
if (error) {
|
|
147
|
+
reject(error);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
resolve();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
135
153
|
this.boundPort = undefined;
|
|
136
154
|
if (listenError) {
|
|
137
155
|
throw listenError;
|
|
138
156
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
await new Promise((resolve, reject) => {
|
|
142
|
-
this.server?.close(error => {
|
|
143
|
-
if (error) {
|
|
144
|
-
reject(error);
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
resolve();
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
this.boundPort = undefined;
|
|
151
|
-
if (listenError) {
|
|
152
|
-
throw listenError;
|
|
153
|
-
}
|
|
157
|
+
})();
|
|
158
|
+
return this.closePromise;
|
|
154
159
|
}
|
|
155
160
|
async handleInboundPacket(socket, packet) {
|
|
156
161
|
if (!this.handler) {
|
|
@@ -320,26 +325,19 @@ export class TcpMicroserviceTransport {
|
|
|
320
325
|
}
|
|
321
326
|
}
|
|
322
327
|
bindSocketParser(socket, onPacket) {
|
|
323
|
-
let buffer =
|
|
324
|
-
let bufferBytes = 0;
|
|
328
|
+
let buffer = Buffer.alloc(0);
|
|
325
329
|
socket.on('data', chunk => {
|
|
326
|
-
const
|
|
327
|
-
buffer
|
|
328
|
-
|
|
329
|
-
if (bufferBytes > this.maxFrameBytes) {
|
|
330
|
-
socket.destroy();
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
let newLineIndex = buffer.indexOf('\n');
|
|
330
|
+
const chunkBuffer = typeof chunk === 'string' ? Buffer.from(chunk, 'utf8') : chunk;
|
|
331
|
+
buffer = buffer.length === 0 ? chunkBuffer : Buffer.concat([buffer, chunkBuffer]);
|
|
332
|
+
let newLineIndex = buffer.indexOf(0x0a);
|
|
334
333
|
while (newLineIndex >= 0) {
|
|
335
|
-
const rawLine = buffer.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
bufferBytes = Buffer.byteLength(buffer, 'utf8');
|
|
339
|
-
if (Buffer.byteLength(rawLine, 'utf8') > this.maxFrameBytes) {
|
|
334
|
+
const rawLine = buffer.subarray(0, newLineIndex);
|
|
335
|
+
buffer = buffer.subarray(newLineIndex + 1);
|
|
336
|
+
if (rawLine.length > this.maxFrameBytes) {
|
|
340
337
|
socket.destroy();
|
|
341
338
|
return;
|
|
342
339
|
}
|
|
340
|
+
const line = rawLine.toString('utf8').trim();
|
|
343
341
|
if (line.length > 0) {
|
|
344
342
|
try {
|
|
345
343
|
void Promise.resolve(onPacket(JSON.parse(line))).catch(() => undefined);
|
|
@@ -348,7 +346,10 @@ export class TcpMicroserviceTransport {
|
|
|
348
346
|
return;
|
|
349
347
|
}
|
|
350
348
|
}
|
|
351
|
-
newLineIndex = buffer.indexOf(
|
|
349
|
+
newLineIndex = buffer.indexOf(0x0a);
|
|
350
|
+
}
|
|
351
|
+
if (buffer.length > this.maxFrameBytes) {
|
|
352
|
+
socket.destroy();
|
|
352
353
|
}
|
|
353
354
|
});
|
|
354
355
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -69,6 +69,13 @@ export interface MicroserviceTransport {
|
|
|
69
69
|
listenServerStreaming?(handler: TransportServerStreamHandler): void;
|
|
70
70
|
/** Whether this transport closes or destroys runtime resources it creates. */
|
|
71
71
|
readonly ownsResources?: boolean;
|
|
72
|
+
/** Per-resource ownership details when one transport mixes caller- and framework-owned resources. */
|
|
73
|
+
readonly resourceOwnership?: {
|
|
74
|
+
/** Ownership of cached outbound transport clients. */
|
|
75
|
+
readonly outboundClients?: 'caller' | 'framework';
|
|
76
|
+
/** Ownership of the inbound transport server. */
|
|
77
|
+
readonly server?: 'caller' | 'framework';
|
|
78
|
+
};
|
|
72
79
|
setLogger?(logger: MicroserviceTransportLogger): void;
|
|
73
80
|
send(pattern: string, payload: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
74
81
|
serverStream?(pattern: string, payload: unknown, signal?: AbortSignal): AsyncIterable<unknown>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"grpc",
|
|
14
14
|
"mqtt"
|
|
15
15
|
],
|
|
16
|
-
"version": "
|
|
16
|
+
"version": "2.0.0",
|
|
17
17
|
"private": false,
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"repository": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"directory": "packages/microservices"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
|
-
"node": ">=
|
|
25
|
+
"node": ">=24.0.0 <27"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|
|
@@ -53,6 +53,10 @@
|
|
|
53
53
|
"types": "./dist/transports/redis-transport.d.ts",
|
|
54
54
|
"import": "./dist/transports/redis-transport.js"
|
|
55
55
|
},
|
|
56
|
+
"./redis-streams": {
|
|
57
|
+
"types": "./dist/transports/redis-streams-transport.d.ts",
|
|
58
|
+
"import": "./dist/transports/redis-streams-transport.js"
|
|
59
|
+
},
|
|
56
60
|
"./rabbitmq": {
|
|
57
61
|
"types": "./dist/transports/rabbitmq-transport.d.ts",
|
|
58
62
|
"import": "./dist/transports/rabbitmq-transport.js"
|
|
@@ -68,12 +72,12 @@
|
|
|
68
72
|
"dist"
|
|
69
73
|
],
|
|
70
74
|
"dependencies": {
|
|
71
|
-
"@fluojs/core": "^
|
|
72
|
-
"@fluojs/di": "^
|
|
73
|
-
"@fluojs/runtime": "^
|
|
75
|
+
"@fluojs/core": "^2.0.0",
|
|
76
|
+
"@fluojs/di": "^3.0.0",
|
|
77
|
+
"@fluojs/runtime": "^3.0.0"
|
|
74
78
|
},
|
|
75
79
|
"peerDependencies": {
|
|
76
|
-
"@grpc/grpc-js": "^1.
|
|
80
|
+
"@grpc/grpc-js": "^1.14.4",
|
|
77
81
|
"@grpc/proto-loader": "^0.8.0",
|
|
78
82
|
"ioredis": "^5.0.0",
|
|
79
83
|
"mqtt": "^5.0.0"
|
|
@@ -93,7 +97,7 @@
|
|
|
93
97
|
}
|
|
94
98
|
},
|
|
95
99
|
"devDependencies": {
|
|
96
|
-
"vitest": "^
|
|
100
|
+
"vitest": "^4.1.11"
|
|
97
101
|
},
|
|
98
102
|
"scripts": {
|
|
99
103
|
"prebuild": "node ../../tooling/scripts/clean-dist.mjs",
|