@message-queue-toolkit/core 18.1.0 → 20.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/dist/index.d.ts +1 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/events/DomainEventEmitter.js +1 -1
- package/dist/lib/events/DomainEventEmitter.js.map +1 -1
- package/dist/lib/message-deduplication/messageDeduplicationTypes.d.ts +41 -0
- package/dist/lib/message-deduplication/messageDeduplicationTypes.js +21 -0
- package/dist/lib/message-deduplication/messageDeduplicationTypes.js.map +1 -0
- package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js +1 -1
- package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js.map +1 -1
- package/dist/lib/queues/AbstractPublisherManager.js.map +1 -1
- package/dist/lib/queues/AbstractQueueService.d.ts +47 -6
- package/dist/lib/queues/AbstractQueueService.js +128 -23
- package/dist/lib/queues/AbstractQueueService.js.map +1 -1
- package/dist/lib/queues/HandlerSpy.d.ts +4 -4
- package/dist/lib/queues/HandlerSpy.js +11 -13
- package/dist/lib/queues/HandlerSpy.js.map +1 -1
- package/dist/lib/types/MessageQueueTypes.d.ts +10 -1
- package/dist/lib/types/queueOptionsTypes.d.ts +25 -2
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -27,3 +27,4 @@ export * from './lib/messages/MetadataFiller';
|
|
|
27
27
|
export * from './lib/queues/AbstractPublisherManager';
|
|
28
28
|
export { PayloadStoreTypes, PayloadStoreConfig, SerializedPayload, PayloadSerializer, } from './lib/payload-store/payloadStoreTypes';
|
|
29
29
|
export { OffloadedPayloadPointerPayload, OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA, isOffloadedPayloadPointerPayload, } from './lib/payload-store/offloadedPayloadMessageSchemas';
|
|
30
|
+
export { type MessageDeduplicationStore, type MessageDeduplicationConfig, type ReleasableLock, type AcquireLockOptions, DeduplicationRequester, AcquireLockTimeoutError, noopReleasableLock, } from './lib/message-deduplication/messageDeduplicationTypes';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isOffloadedPayloadPointerPayload = exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = exports.FakeListener = exports.EventRegistry = exports.DomainEventEmitter = exports.isProduction = exports.reloadConfig = exports.toDatePreprocessor = exports.isRetryDateExceeded = exports.parseMessage = exports.waitAndRetry = exports.objectToBuffer = exports.MessageSchemaContainer = exports.HandlerSpy = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.HandlerContainer = exports.DoNotProcessMessageError = exports.RetryMessageLaterError = exports.objectMatches = exports.isShallowSubset = exports.MessageInvalidFormatError = exports.MessageValidationError = exports.isMessageError = exports.AbstractQueueService = void 0;
|
|
3
|
+
exports.noopReleasableLock = exports.AcquireLockTimeoutError = exports.DeduplicationRequester = exports.isOffloadedPayloadPointerPayload = exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = exports.FakeListener = exports.EventRegistry = exports.DomainEventEmitter = exports.isProduction = exports.reloadConfig = exports.toDatePreprocessor = exports.isRetryDateExceeded = exports.parseMessage = exports.waitAndRetry = exports.objectToBuffer = exports.MessageSchemaContainer = exports.HandlerSpy = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.HandlerContainer = exports.DoNotProcessMessageError = exports.RetryMessageLaterError = exports.objectMatches = exports.isShallowSubset = exports.MessageInvalidFormatError = exports.MessageValidationError = exports.isMessageError = exports.AbstractQueueService = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var AbstractQueueService_1 = require("./lib/queues/AbstractQueueService");
|
|
6
6
|
Object.defineProperty(exports, "AbstractQueueService", { enumerable: true, get: function () { return AbstractQueueService_1.AbstractQueueService; } });
|
|
@@ -51,4 +51,8 @@ tslib_1.__exportStar(require("./lib/queues/AbstractPublisherManager"), exports);
|
|
|
51
51
|
var offloadedPayloadMessageSchemas_1 = require("./lib/payload-store/offloadedPayloadMessageSchemas");
|
|
52
52
|
Object.defineProperty(exports, "OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA", { enumerable: true, get: function () { return offloadedPayloadMessageSchemas_1.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA; } });
|
|
53
53
|
Object.defineProperty(exports, "isOffloadedPayloadPointerPayload", { enumerable: true, get: function () { return offloadedPayloadMessageSchemas_1.isOffloadedPayloadPointerPayload; } });
|
|
54
|
+
var messageDeduplicationTypes_1 = require("./lib/message-deduplication/messageDeduplicationTypes");
|
|
55
|
+
Object.defineProperty(exports, "DeduplicationRequester", { enumerable: true, get: function () { return messageDeduplicationTypes_1.DeduplicationRequester; } });
|
|
56
|
+
Object.defineProperty(exports, "AcquireLockTimeoutError", { enumerable: true, get: function () { return messageDeduplicationTypes_1.AcquireLockTimeoutError; } });
|
|
57
|
+
Object.defineProperty(exports, "noopReleasableLock", { enumerable: true, get: function () { return messageDeduplicationTypes_1.noopReleasableLock; } });
|
|
54
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AASA,0EAI0C;AAHxC,4HAAA,oBAAoB,OAAA;AAItB,wEAA6C;AAE7C,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,qDAAuE;AAA9D,6GAAA,eAAe,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEvC,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAE/B,oEAAyE;AAAhE,6HAAA,wBAAwB,OAAA;AAEjC,kEAKsC;AAHpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAY7B,sDAAoD;AAA3C,wGAAA,UAAU,OAAA;AAGnB,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAG/B,qDAAuD;AAA9C,4GAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,yGAAA,YAAY,OAAA;AACrB,qDAA8E;AAA5C,0GAAA,YAAY,OAAA;AAC9C,mDAA2D;AAAlD,gHAAA,mBAAmB,OAAA;AAC5B,+DAAgE;AAAvD,qHAAA,kBAAkB,OAAA;AAE3B,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAEnC,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,4DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,gEAA8D;AAArD,4GAAA,YAAY,OAAA;AAErB,kEAAuC;AACvC,wEAA6C;AAC7C,4EAAiD;AAEjD,wEAA6C;AAE7C,gFAAqD;AAOrD,qGAI2D;AAFzD,0JAAA,wCAAwC,OAAA;AACxC,kJAAA,gCAAgC,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AASA,0EAI0C;AAHxC,4HAAA,oBAAoB,OAAA;AAItB,wEAA6C;AAE7C,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,qDAAuE;AAA9D,6GAAA,eAAe,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEvC,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAE/B,oEAAyE;AAAhE,6HAAA,wBAAwB,OAAA;AAEjC,kEAKsC;AAHpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAY7B,sDAAoD;AAA3C,wGAAA,UAAU,OAAA;AAGnB,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAG/B,qDAAuD;AAA9C,4GAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,yGAAA,YAAY,OAAA;AACrB,qDAA8E;AAA5C,0GAAA,YAAY,OAAA;AAC9C,mDAA2D;AAAlD,gHAAA,mBAAmB,OAAA;AAC5B,+DAAgE;AAAvD,qHAAA,kBAAkB,OAAA;AAE3B,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAEnC,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,4DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,gEAA8D;AAArD,4GAAA,YAAY,OAAA;AAErB,kEAAuC;AACvC,wEAA6C;AAC7C,4EAAiD;AAEjD,wEAA6C;AAE7C,gFAAqD;AAOrD,qGAI2D;AAFzD,0JAAA,wCAAwC,OAAA;AACxC,kJAAA,gCAAgC,OAAA;AAElC,mGAQ8D;AAH5D,mIAAA,sBAAsB,OAAA;AACtB,oIAAA,uBAAuB,OAAA;AACvB,+HAAA,kBAAkB,OAAA"}
|
|
@@ -103,7 +103,7 @@ class DomainEventEmitter {
|
|
|
103
103
|
this._handlerSpy.addProcessedMessage({
|
|
104
104
|
// @ts-ignore
|
|
105
105
|
message: event,
|
|
106
|
-
processingResult: 'consumed',
|
|
106
|
+
processingResult: { status: 'consumed' },
|
|
107
107
|
}, event.id);
|
|
108
108
|
});
|
|
109
109
|
this.inProgressBackgroundHandlerByEventId.set(event.id, bgPromise);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Either } from '@lokalise/node-core';
|
|
2
|
+
import type { MessageDeduplicationOptions } from '@message-queue-toolkit/schemas';
|
|
3
|
+
export interface ReleasableLock {
|
|
4
|
+
release(): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare class AcquireLockTimeoutError extends Error {
|
|
7
|
+
}
|
|
8
|
+
export type AcquireLockOptions = Required<Pick<MessageDeduplicationOptions, 'acquireTimeoutSeconds' | 'lockTimeoutSeconds' | 'refreshIntervalSeconds'>>;
|
|
9
|
+
export interface MessageDeduplicationStore {
|
|
10
|
+
/**
|
|
11
|
+
* Stores a deduplication key in case it does not already exist.
|
|
12
|
+
* @param {string} key - deduplication key
|
|
13
|
+
* @param {string} value - value to store
|
|
14
|
+
* @param {number} ttlSeconds - time to live in seconds
|
|
15
|
+
* @returns {Promise<boolean>} - true if the key was stored, false if it already existed
|
|
16
|
+
*/
|
|
17
|
+
setIfNotExists(key: string, value: string, ttlSeconds: number): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Acquires locks for a given key
|
|
20
|
+
* @param {string} key - deduplication key
|
|
21
|
+
* @param {object} options - options used when acquiring the lock
|
|
22
|
+
* @returns {Promise<Either<AcquireLockTimeoutError | Error, ReleasableLock>>} - a promise that resolves to a ReleasableLock if the lock was acquired, AcquireLockTimeoutError error if the lock could not be acquired due to timeout, or an Error if the lock could not be acquired for another reason
|
|
23
|
+
*/
|
|
24
|
+
acquireLock(key: string, options: object): Promise<Either<AcquireLockTimeoutError | Error, ReleasableLock>>;
|
|
25
|
+
/**
|
|
26
|
+
* Checks if a deduplication key exists in the store
|
|
27
|
+
* @param {string} key - deduplication key
|
|
28
|
+
* @returns {Promise<boolean>} - true if the key exists, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
keyExists(key: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
export type MessageDeduplicationConfig = {
|
|
33
|
+
/** The store to use for storage and retrieval of deduplication keys */
|
|
34
|
+
deduplicationStore: MessageDeduplicationStore;
|
|
35
|
+
};
|
|
36
|
+
export declare enum DeduplicationRequester {
|
|
37
|
+
Consumer = "consumer",
|
|
38
|
+
Publisher = "publisher"
|
|
39
|
+
}
|
|
40
|
+
export declare const DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS: Required<MessageDeduplicationOptions>;
|
|
41
|
+
export declare const noopReleasableLock: ReleasableLock;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noopReleasableLock = exports.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS = exports.DeduplicationRequester = exports.AcquireLockTimeoutError = void 0;
|
|
4
|
+
class AcquireLockTimeoutError extends Error {
|
|
5
|
+
}
|
|
6
|
+
exports.AcquireLockTimeoutError = AcquireLockTimeoutError;
|
|
7
|
+
var DeduplicationRequester;
|
|
8
|
+
(function (DeduplicationRequester) {
|
|
9
|
+
DeduplicationRequester["Consumer"] = "consumer";
|
|
10
|
+
DeduplicationRequester["Publisher"] = "publisher";
|
|
11
|
+
})(DeduplicationRequester || (exports.DeduplicationRequester = DeduplicationRequester = {}));
|
|
12
|
+
exports.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS = {
|
|
13
|
+
deduplicationWindowSeconds: 40,
|
|
14
|
+
lockTimeoutSeconds: 20,
|
|
15
|
+
acquireTimeoutSeconds: 20,
|
|
16
|
+
refreshIntervalSeconds: 10,
|
|
17
|
+
};
|
|
18
|
+
exports.noopReleasableLock = {
|
|
19
|
+
release: async () => { },
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=messageDeduplicationTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageDeduplicationTypes.js","sourceRoot":"","sources":["../../../lib/message-deduplication/messageDeduplicationTypes.ts"],"names":[],"mappings":";;;AAOA,MAAa,uBAAwB,SAAQ,KAAK;CAAG;AAArD,0DAAqD;AA2CrD,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,+CAAqB,CAAA;IACrB,iDAAuB,CAAA;AACzB,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAEY,QAAA,qCAAqC,GAA0C;IAC1F,0BAA0B,EAAE,EAAE;IAC9B,kBAAkB,EAAE,EAAE;IACtB,qBAAqB,EAAE,EAAE;IACzB,sBAAsB,EAAE,EAAE;CAC3B,CAAA;AAEY,QAAA,kBAAkB,GAAmB;IAChD,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;CACxB,CAAA"}
|
|
@@ -12,7 +12,7 @@ exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = zod_1.z
|
|
|
12
12
|
offloadedPayloadPointer: zod_1.z.string().min(1),
|
|
13
13
|
offloadedPayloadSize: zod_1.z.number().int().positive(),
|
|
14
14
|
})
|
|
15
|
-
// Pass-through allows to pass message ID, type and
|
|
15
|
+
// Pass-through allows to pass message ID, type, timestamp and message-deduplication-related fields that are using dynamic keys.
|
|
16
16
|
.passthrough();
|
|
17
17
|
function isOffloadedPayloadPointerPayload(value) {
|
|
18
18
|
return value.offloadedPayloadPointer !== undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offloadedPayloadMessageSchemas.js","sourceRoot":"","sources":["../../../lib/payload-store/offloadedPayloadMessageSchemas.ts"],"names":[],"mappings":";;;AAkBA,4EAIC;AAtBD,6BAAuB;AAEvB;;;GAGG;AACU,QAAA,wCAAwC,GAAG,OAAC;KACtD,MAAM,CAAC;IACN,uBAAuB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,oBAAoB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;IACF,
|
|
1
|
+
{"version":3,"file":"offloadedPayloadMessageSchemas.js","sourceRoot":"","sources":["../../../lib/payload-store/offloadedPayloadMessageSchemas.ts"],"names":[],"mappings":";;;AAkBA,4EAIC;AAtBD,6BAAuB;AAEvB;;;GAGG;AACU,QAAA,wCAAwC,GAAG,OAAC;KACtD,MAAM,CAAC;IACN,uBAAuB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,oBAAoB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;IACF,gIAAgI;KAC/H,WAAW,EAAE,CAAA;AAMhB,SAAgB,gCAAgC,CAC9C,KAAc;IAEd,OAAQ,KAAwC,CAAC,uBAAuB,KAAK,SAAS,CAAA;AACxF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPublisherManager.js","sourceRoot":"","sources":["../../../lib/queues/AbstractPublisherManager.ts"],"names":[],"mappings":";;;AA6BA,MAAsB,wBAAwB;IAgB3B,gBAAgB,CAOhC;IAEkB,mBAAmB,CAAa;IAEhC,cAAc,CAGhC;IACkB,aAAa,CAAQ;IAExC,qFAAqF;IAClE,gBAAgB,GAAgD,EAGlF,CAAA;IACkB,OAAO,CAAS;IACzB,oBAAoB,GAAwC,EAGrE,CAAA;IACgB,qBAAqB,CAAkB;IAExD,YAAsB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,aAAa,EACb,OAAO,GAmBR;QACC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;QAElD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;QAClD,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC3B,CAAC;IAIS,+BAA+B,CAAC,YAAoB;QAC5D,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,cAAc,CAAC,MAAiC;QACtD,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;YAE3D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,SAAQ;YACV,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA;YACzC,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractPublisherManager.js","sourceRoot":"","sources":["../../../lib/queues/AbstractPublisherManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { CommonLogger, Either, ErrorReporter, ErrorResolver } from '@lokalise/node-core';
|
|
2
2
|
import type { ZodSchema, ZodType } from 'zod';
|
|
3
3
|
import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
|
|
4
|
-
import type
|
|
4
|
+
import { AcquireLockTimeoutError, DeduplicationRequester, type MessageDeduplicationConfig, type ReleasableLock } from '../message-deduplication/messageDeduplicationTypes';
|
|
5
|
+
import { type OffloadedPayloadPointerPayload } from '../payload-store/offloadedPayloadMessageSchemas';
|
|
5
6
|
import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes';
|
|
6
7
|
import type { MessageProcessingResult } from '../types/MessageQueueTypes';
|
|
7
|
-
import type { DeletionConfig, MessageMetricsManager,
|
|
8
|
+
import type { DeletionConfig, MessageMetricsManager, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
|
|
8
9
|
import type { BarrierCallback, BarrierResult, MessageHandlerConfig, PreHandlingOutputs, Prehandler, PrehandlerResult } from './HandlerContainer';
|
|
9
10
|
import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy';
|
|
10
11
|
import { MessageSchemaContainer } from './MessageSchemaContainer';
|
|
@@ -21,12 +22,20 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
21
22
|
* Used to keep track of the number of `retryLater` results received for a message to be able to
|
|
22
23
|
* calculate the delay for the next retry
|
|
23
24
|
*/
|
|
24
|
-
private readonly
|
|
25
|
+
private readonly messageRetryLaterCountField;
|
|
25
26
|
/**
|
|
26
27
|
* Used to know when the message was sent initially so we can have a max retry date and avoid
|
|
27
28
|
* a infinite `retryLater` loop
|
|
28
29
|
*/
|
|
29
30
|
protected readonly messageTimestampField: string;
|
|
31
|
+
/**
|
|
32
|
+
* Used to know the message deduplication id
|
|
33
|
+
*/
|
|
34
|
+
protected readonly messageDeduplicationIdField: string;
|
|
35
|
+
/**
|
|
36
|
+
* Used to know the store-based message deduplication options
|
|
37
|
+
*/
|
|
38
|
+
protected readonly messageDeduplicationOptionsField: string;
|
|
30
39
|
protected readonly errorReporter: ErrorReporter;
|
|
31
40
|
readonly logger: CommonLogger;
|
|
32
41
|
protected readonly messageIdField: string;
|
|
@@ -36,8 +45,9 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
36
45
|
protected readonly locatorConfig?: QueueLocatorType;
|
|
37
46
|
protected readonly deletionConfig?: DeletionConfig;
|
|
38
47
|
protected readonly payloadStoreConfig?: Omit<PayloadStoreConfig, 'serializer'> & Required<Pick<PayloadStoreConfig, 'serializer'>>;
|
|
39
|
-
protected readonly
|
|
48
|
+
protected readonly messageDeduplicationConfig?: MessageDeduplicationConfig;
|
|
40
49
|
protected readonly messageMetricsManager?: MessageMetricsManager<MessagePayloadSchemas>;
|
|
50
|
+
protected readonly _handlerSpy?: HandlerSpy<MessagePayloadSchemas>;
|
|
41
51
|
protected isInitted: boolean;
|
|
42
52
|
get handlerSpy(): PublicHandlerSpy<MessagePayloadSchemas>;
|
|
43
53
|
constructor({ errorReporter, logger, messageMetricsManager }: DependenciesType, options: OptionsType);
|
|
@@ -60,8 +70,14 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
60
70
|
*/
|
|
61
71
|
protected logMessage(messageLogEntry: unknown): void;
|
|
62
72
|
protected handleError(err: unknown, context?: Record<string, unknown>): void;
|
|
63
|
-
protected handleMessageProcessed(
|
|
64
|
-
|
|
73
|
+
protected handleMessageProcessed(params: {
|
|
74
|
+
message: MessagePayloadSchemas | null;
|
|
75
|
+
processingResult: MessageProcessingResult;
|
|
76
|
+
messageProcessingStartTimestamp: number;
|
|
77
|
+
queueName: string;
|
|
78
|
+
messageId?: string;
|
|
79
|
+
}): void;
|
|
80
|
+
private resolveProcessedMessageMetadata;
|
|
65
81
|
protected processPrehandlersInternal(preHandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[], message: MessagePayloadSchemas): Promise<PrehandlerOutput>;
|
|
66
82
|
protected preHandlerBarrierInternal<BarrierOutput>(barrier: BarrierCallback<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, BarrierOutput> | undefined, message: MessagePayloadSchemas, executionContext: ExecutionContext, preHandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>;
|
|
67
83
|
shouldBeRetried(message: MessagePayloadSchemas, maxRetryDuration: number): boolean;
|
|
@@ -86,5 +102,30 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
86
102
|
* Returns the original payload or an error if the payload was not found or could not be parsed.
|
|
87
103
|
*/
|
|
88
104
|
protected retrieveOffloadedMessagePayload(maybeOffloadedPayloadPointerPayload: unknown): Promise<Either<Error, unknown>>;
|
|
105
|
+
/**
|
|
106
|
+
* Checks if the message is duplicated against the deduplication store.
|
|
107
|
+
* Returns true if the message is duplicated.
|
|
108
|
+
* Returns false if message is not duplicated or deduplication config is missing.
|
|
109
|
+
*/
|
|
110
|
+
protected isMessageDuplicated(message: MessagePayloadSchemas, requester: DeduplicationRequester): Promise<boolean>;
|
|
111
|
+
/**
|
|
112
|
+
* Checks if the message is duplicated.
|
|
113
|
+
* If it's not, stores the deduplication key in the deduplication store and returns false.
|
|
114
|
+
* If it is, returns true.
|
|
115
|
+
* If deduplication config is not provided, always returns false to allow further processing of the message.
|
|
116
|
+
*/
|
|
117
|
+
protected deduplicateMessage(message: MessagePayloadSchemas, requester: DeduplicationRequester): Promise<{
|
|
118
|
+
isDuplicated: boolean;
|
|
119
|
+
}>;
|
|
120
|
+
/**
|
|
121
|
+
* Acquires exclusive lock for the message to prevent concurrent processing.
|
|
122
|
+
* If lock was acquired successfully, returns a lock object that should be released after processing.
|
|
123
|
+
* If lock couldn't be acquired due to timeout (meaning another process acquired it earlier), returns AcquireLockTimeoutError
|
|
124
|
+
* If lock couldn't be acquired for any other reasons or if deduplication config is not provided, always returns a lock object that does nothing, so message processing can continue.
|
|
125
|
+
*/
|
|
126
|
+
protected acquireLockForMessage(message: MessagePayloadSchemas): Promise<Either<AcquireLockTimeoutError, ReleasableLock>>;
|
|
127
|
+
protected isDeduplicationEnabledForMessage(message: MessagePayloadSchemas): boolean;
|
|
128
|
+
protected getMessageDeduplicationId(message: MessagePayloadSchemas): string | undefined;
|
|
129
|
+
private getParsedMessageDeduplicationOptions;
|
|
89
130
|
}
|
|
90
131
|
export {};
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AbstractQueueService = void 0;
|
|
4
4
|
const node_util_1 = require("node:util");
|
|
5
5
|
const node_core_1 = require("@lokalise/node-core");
|
|
6
|
+
const schemas_1 = require("@message-queue-toolkit/schemas");
|
|
7
|
+
const messageDeduplicationTypes_1 = require("../message-deduplication/messageDeduplicationTypes");
|
|
6
8
|
const JsonStreamStringifySerializer_1 = require("../payload-store/JsonStreamStringifySerializer");
|
|
7
9
|
const offloadedPayloadMessageSchemas_1 = require("../payload-store/offloadedPayloadMessageSchemas");
|
|
8
10
|
const payloadStoreTypes_1 = require("../payload-store/payloadStoreTypes");
|
|
@@ -16,12 +18,20 @@ class AbstractQueueService {
|
|
|
16
18
|
* Used to keep track of the number of `retryLater` results received for a message to be able to
|
|
17
19
|
* calculate the delay for the next retry
|
|
18
20
|
*/
|
|
19
|
-
|
|
21
|
+
messageRetryLaterCountField = '_internalRetryLaterCount';
|
|
20
22
|
/**
|
|
21
23
|
* Used to know when the message was sent initially so we can have a max retry date and avoid
|
|
22
24
|
* a infinite `retryLater` loop
|
|
23
25
|
*/
|
|
24
26
|
messageTimestampField;
|
|
27
|
+
/**
|
|
28
|
+
* Used to know the message deduplication id
|
|
29
|
+
*/
|
|
30
|
+
messageDeduplicationIdField;
|
|
31
|
+
/**
|
|
32
|
+
* Used to know the store-based message deduplication options
|
|
33
|
+
*/
|
|
34
|
+
messageDeduplicationOptionsField;
|
|
25
35
|
errorReporter;
|
|
26
36
|
logger;
|
|
27
37
|
messageIdField;
|
|
@@ -31,8 +41,9 @@ class AbstractQueueService {
|
|
|
31
41
|
locatorConfig;
|
|
32
42
|
deletionConfig;
|
|
33
43
|
payloadStoreConfig;
|
|
34
|
-
|
|
44
|
+
messageDeduplicationConfig;
|
|
35
45
|
messageMetricsManager;
|
|
46
|
+
_handlerSpy;
|
|
36
47
|
isInitted;
|
|
37
48
|
get handlerSpy() {
|
|
38
49
|
if (!this._handlerSpy) {
|
|
@@ -47,6 +58,9 @@ class AbstractQueueService {
|
|
|
47
58
|
this.messageIdField = options.messageIdField ?? 'id';
|
|
48
59
|
this.messageTypeField = options.messageTypeField;
|
|
49
60
|
this.messageTimestampField = options.messageTimestampField ?? 'timestamp';
|
|
61
|
+
this.messageDeduplicationIdField = options.messageDeduplicationIdField ?? 'deduplicationId';
|
|
62
|
+
this.messageDeduplicationOptionsField =
|
|
63
|
+
options.messageDeduplicationOptionsField ?? 'deduplicationOptions';
|
|
50
64
|
this.creationConfig = options.creationConfig;
|
|
51
65
|
this.locatorConfig = options.locatorConfig;
|
|
52
66
|
this.deletionConfig = options.deletionConfig;
|
|
@@ -56,6 +70,7 @@ class AbstractQueueService {
|
|
|
56
70
|
...options.payloadStoreConfig,
|
|
57
71
|
}
|
|
58
72
|
: undefined;
|
|
73
|
+
this.messageDeduplicationConfig = options.messageDeduplicationConfig;
|
|
59
74
|
this.logMessages = options.logMessages ?? false;
|
|
60
75
|
this._handlerSpy = (0, HandlerSpy_1.resolveHandlerSpy)(options);
|
|
61
76
|
this.isInitted = false;
|
|
@@ -102,19 +117,17 @@ class AbstractQueueService {
|
|
|
102
117
|
this.errorReporter.report({ error: err, context });
|
|
103
118
|
}
|
|
104
119
|
}
|
|
105
|
-
handleMessageProcessed(
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
120
|
+
handleMessageProcessed(params) {
|
|
121
|
+
const { message, processingResult, messageId } = params;
|
|
122
|
+
const messageProcessingEndTimestamp = Date.now();
|
|
123
|
+
this._handlerSpy?.addProcessedMessage({
|
|
124
|
+
message,
|
|
125
|
+
processingResult,
|
|
126
|
+
}, messageId);
|
|
113
127
|
const debugLoggingEnabled = this.logMessages && this.logger.isLevelEnabled('debug');
|
|
114
|
-
if (!debugLoggingEnabled && !this.messageMetricsManager)
|
|
128
|
+
if (!debugLoggingEnabled && !this.messageMetricsManager)
|
|
115
129
|
return;
|
|
116
|
-
|
|
117
|
-
const processedMessageMetadata = this.resolveProcessedMessageMetadata(message, processingResult, messageProcessedTimestamp, messageId);
|
|
130
|
+
const processedMessageMetadata = this.resolveProcessedMessageMetadata(message, processingResult, params.messageProcessingStartTimestamp, messageProcessingEndTimestamp, params.queueName, messageId);
|
|
118
131
|
if (debugLoggingEnabled) {
|
|
119
132
|
this.logger.debug(processedMessageMetadata, `Finished processing message ${processedMessageMetadata.messageId}`);
|
|
120
133
|
}
|
|
@@ -122,23 +135,28 @@ class AbstractQueueService {
|
|
|
122
135
|
this.messageMetricsManager.registerProcessedMessage(processedMessageMetadata);
|
|
123
136
|
}
|
|
124
137
|
}
|
|
125
|
-
resolveProcessedMessageMetadata(message, processingResult,
|
|
138
|
+
resolveProcessedMessageMetadata(message, processingResult, messageProcessingStartTimestamp, messageProcessingEndTimestamp, queueName, messageId) {
|
|
126
139
|
// @ts-ignore
|
|
127
140
|
const resolvedMessageId = message?.[this.messageIdField] ?? messageId;
|
|
128
|
-
const messageTimestamp = message ? this.tryToExtractTimestamp(message) : undefined;
|
|
129
|
-
const messageProcessingMilliseconds = messageTimestamp
|
|
130
|
-
? messageProcessedTimestamp - messageTimestamp.getTime()
|
|
131
|
-
: undefined;
|
|
141
|
+
const messageTimestamp = message ? this.tryToExtractTimestamp(message)?.getTime() : undefined;
|
|
132
142
|
const messageType = message && this.messageTypeField in message
|
|
133
143
|
? // @ts-ignore
|
|
134
144
|
message[this.messageTypeField]
|
|
135
145
|
: undefined;
|
|
146
|
+
const messageDeduplicationId = message && this.messageDeduplicationIdField in message
|
|
147
|
+
? // @ts-ignore
|
|
148
|
+
message[this.messageDeduplicationId]
|
|
149
|
+
: undefined;
|
|
136
150
|
return {
|
|
137
151
|
processingResult,
|
|
138
152
|
messageId: resolvedMessageId ?? '(unknown id)',
|
|
139
|
-
messageProcessingMilliseconds,
|
|
140
153
|
messageType,
|
|
154
|
+
queueName,
|
|
141
155
|
message,
|
|
156
|
+
messageTimestamp,
|
|
157
|
+
messageDeduplicationId,
|
|
158
|
+
messageProcessingStartTimestamp,
|
|
159
|
+
messageProcessingEndTimestamp,
|
|
142
160
|
};
|
|
143
161
|
}
|
|
144
162
|
processPrehandlersInternal(preHandlers, message) {
|
|
@@ -194,7 +212,7 @@ class AbstractQueueService {
|
|
|
194
212
|
*/
|
|
195
213
|
const numberOfRetries = this.tryToExtractNumberOfRetries(message);
|
|
196
214
|
// @ts-ignore
|
|
197
|
-
messageCopy[this.
|
|
215
|
+
messageCopy[this.messageRetryLaterCountField] =
|
|
198
216
|
numberOfRetries !== undefined ? numberOfRetries + 1 : 0;
|
|
199
217
|
return messageCopy;
|
|
200
218
|
}
|
|
@@ -211,10 +229,10 @@ class AbstractQueueService {
|
|
|
211
229
|
return undefined;
|
|
212
230
|
}
|
|
213
231
|
tryToExtractNumberOfRetries(message) {
|
|
214
|
-
if (this.
|
|
215
|
-
typeof message[this.
|
|
232
|
+
if (this.messageRetryLaterCountField in message &&
|
|
233
|
+
typeof message[this.messageRetryLaterCountField] === 'number') {
|
|
216
234
|
// @ts-ignore
|
|
217
|
-
return message[this.
|
|
235
|
+
return message[this.messageRetryLaterCountField];
|
|
218
236
|
}
|
|
219
237
|
return undefined;
|
|
220
238
|
}
|
|
@@ -264,6 +282,10 @@ class AbstractQueueService {
|
|
|
264
282
|
[this.messageTypeField]: message[this.messageTypeField],
|
|
265
283
|
// @ts-ignore
|
|
266
284
|
[this.messageTimestampField]: message[this.messageTimestampField],
|
|
285
|
+
// @ts-ignore
|
|
286
|
+
[this.messageDeduplicationIdField]: message[this.messageDeduplicationIdField],
|
|
287
|
+
// @ts-ignore
|
|
288
|
+
[this.messageDeduplicationOptionsField]: message[this.messageDeduplicationOptionsField],
|
|
267
289
|
};
|
|
268
290
|
}
|
|
269
291
|
/**
|
|
@@ -298,6 +320,89 @@ class AbstractQueueService {
|
|
|
298
320
|
return { error: new Error('Failed to parse serialized offloaded payload', { cause: e }) };
|
|
299
321
|
}
|
|
300
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Checks if the message is duplicated against the deduplication store.
|
|
325
|
+
* Returns true if the message is duplicated.
|
|
326
|
+
* Returns false if message is not duplicated or deduplication config is missing.
|
|
327
|
+
*/
|
|
328
|
+
async isMessageDuplicated(message, requester) {
|
|
329
|
+
if (!this.isDeduplicationEnabledForMessage(message)) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
const deduplicationId = this.getMessageDeduplicationId(message);
|
|
333
|
+
const deduplicationConfig = this.messageDeduplicationConfig;
|
|
334
|
+
try {
|
|
335
|
+
return await deduplicationConfig.deduplicationStore.keyExists(`${requester.toString()}:${deduplicationId}`);
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
this.handleError(err);
|
|
339
|
+
// In case of errors, we treat the message as not duplicated to enable further processing
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Checks if the message is duplicated.
|
|
345
|
+
* If it's not, stores the deduplication key in the deduplication store and returns false.
|
|
346
|
+
* If it is, returns true.
|
|
347
|
+
* If deduplication config is not provided, always returns false to allow further processing of the message.
|
|
348
|
+
*/
|
|
349
|
+
async deduplicateMessage(message, requester) {
|
|
350
|
+
if (!this.isDeduplicationEnabledForMessage(message)) {
|
|
351
|
+
return { isDuplicated: false };
|
|
352
|
+
}
|
|
353
|
+
const deduplicationId = this.getMessageDeduplicationId(message);
|
|
354
|
+
const { deduplicationWindowSeconds } = this.getParsedMessageDeduplicationOptions(message);
|
|
355
|
+
const deduplicationConfig = this.messageDeduplicationConfig;
|
|
356
|
+
try {
|
|
357
|
+
const wasDeduplicationKeyStored = await deduplicationConfig.deduplicationStore.setIfNotExists(`${requester.toString()}:${deduplicationId}`, new Date().toISOString(), deduplicationWindowSeconds);
|
|
358
|
+
return { isDuplicated: !wasDeduplicationKeyStored };
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
this.handleError(err);
|
|
362
|
+
// In case of errors, we treat the message as not duplicated to enable further processing
|
|
363
|
+
return { isDuplicated: false };
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Acquires exclusive lock for the message to prevent concurrent processing.
|
|
368
|
+
* If lock was acquired successfully, returns a lock object that should be released after processing.
|
|
369
|
+
* If lock couldn't be acquired due to timeout (meaning another process acquired it earlier), returns AcquireLockTimeoutError
|
|
370
|
+
* If lock couldn't be acquired for any other reasons or if deduplication config is not provided, always returns a lock object that does nothing, so message processing can continue.
|
|
371
|
+
*/
|
|
372
|
+
async acquireLockForMessage(message) {
|
|
373
|
+
if (!this.isDeduplicationEnabledForMessage(message)) {
|
|
374
|
+
return { result: messageDeduplicationTypes_1.noopReleasableLock };
|
|
375
|
+
}
|
|
376
|
+
const deduplicationId = this.getMessageDeduplicationId(message);
|
|
377
|
+
const deduplicationOptions = this.getParsedMessageDeduplicationOptions(message);
|
|
378
|
+
const deduplicationConfig = this.messageDeduplicationConfig;
|
|
379
|
+
const acquireLockResult = await deduplicationConfig.deduplicationStore.acquireLock(`${messageDeduplicationTypes_1.DeduplicationRequester.Consumer.toString()}:${deduplicationId}`, deduplicationOptions);
|
|
380
|
+
if (acquireLockResult.error && !(acquireLockResult.error instanceof messageDeduplicationTypes_1.AcquireLockTimeoutError)) {
|
|
381
|
+
this.handleError(acquireLockResult.error);
|
|
382
|
+
return { result: messageDeduplicationTypes_1.noopReleasableLock };
|
|
383
|
+
}
|
|
384
|
+
return acquireLockResult;
|
|
385
|
+
}
|
|
386
|
+
isDeduplicationEnabledForMessage(message) {
|
|
387
|
+
return !!this.messageDeduplicationConfig && !!this.getMessageDeduplicationId(message);
|
|
388
|
+
}
|
|
389
|
+
getMessageDeduplicationId(message) {
|
|
390
|
+
// @ts-ignore
|
|
391
|
+
return message[this.messageDeduplicationIdField];
|
|
392
|
+
}
|
|
393
|
+
getParsedMessageDeduplicationOptions(message) {
|
|
394
|
+
const parsedOptions = schemas_1.MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA.safeParse(
|
|
395
|
+
// @ts-expect-error
|
|
396
|
+
message[this.messageDeduplicationOptionsField] ?? {});
|
|
397
|
+
if (parsedOptions.error) {
|
|
398
|
+
this.logger.warn({ error: parsedOptions.error.message }, `${this.messageDeduplicationOptionsField} contains one or more invalid values, falling back to default options`);
|
|
399
|
+
return messageDeduplicationTypes_1.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS;
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
...messageDeduplicationTypes_1.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS,
|
|
403
|
+
...Object.fromEntries(Object.entries(parsedOptions.data).filter(([_, value]) => value !== undefined)),
|
|
404
|
+
};
|
|
405
|
+
}
|
|
301
406
|
}
|
|
302
407
|
exports.AbstractQueueService = AbstractQueueService;
|
|
303
408
|
//# sourceMappingURL=AbstractQueueService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MessageProcessingResult } from '../types/MessageQueueTypes';
|
|
1
|
+
import type { MessageProcessingResult, MessageProcessingResultStatus } from '../types/MessageQueueTypes';
|
|
2
2
|
export type HandlerSpyParams = {
|
|
3
3
|
bufferSize?: number;
|
|
4
4
|
messageIdField?: string;
|
|
@@ -25,9 +25,9 @@ export declare class HandlerSpy<MessagePayloadSchemas extends object> {
|
|
|
25
25
|
private readonly spyPromises;
|
|
26
26
|
constructor(params?: HandlerSpyParams);
|
|
27
27
|
private messageMatchesFilter;
|
|
28
|
-
waitForMessageWithId<T extends MessagePayloadSchemas>(id: string,
|
|
29
|
-
checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>,
|
|
30
|
-
waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>,
|
|
28
|
+
waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
|
|
29
|
+
checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): SpyResultOutput<T> | undefined;
|
|
30
|
+
waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
|
|
31
31
|
clear(): void;
|
|
32
32
|
addProcessedMessage(processingResult: SpyResultInput<MessagePayloadSchemas>, messageId?: string): void;
|
|
33
33
|
}
|
|
@@ -26,24 +26,22 @@ class HandlerSpy {
|
|
|
26
26
|
this.messageTypeField = params.messageTypeField ?? 'type';
|
|
27
27
|
this.spyPromises = [];
|
|
28
28
|
}
|
|
29
|
-
messageMatchesFilter(spyResult, fields,
|
|
29
|
+
messageMatchesFilter(spyResult, fields, status) {
|
|
30
30
|
return ((0, matchUtils_1.objectMatches)(fields, spyResult.message) &&
|
|
31
|
-
(!
|
|
31
|
+
(!status || spyResult.processingResult.status === status));
|
|
32
32
|
}
|
|
33
|
-
waitForMessageWithId(id,
|
|
33
|
+
waitForMessageWithId(id, status) {
|
|
34
34
|
return this.waitForMessage(
|
|
35
|
-
// @ts-
|
|
36
|
-
{
|
|
37
|
-
[this.messageIdField]: id,
|
|
38
|
-
}, processingResult);
|
|
35
|
+
// @ts-expect-error
|
|
36
|
+
{ [this.messageIdField]: id }, status);
|
|
39
37
|
}
|
|
40
|
-
checkForMessage(expectedFields,
|
|
38
|
+
checkForMessage(expectedFields, status) {
|
|
41
39
|
return Object.values(this.messageBuffer.items).find((spyResult) => {
|
|
42
|
-
return this.messageMatchesFilter(spyResult.value, expectedFields,
|
|
40
|
+
return this.messageMatchesFilter(spyResult.value, expectedFields, status);
|
|
43
41
|
})?.value;
|
|
44
42
|
}
|
|
45
|
-
waitForMessage(expectedFields,
|
|
46
|
-
const processedMessageEntry = this.checkForMessage(expectedFields,
|
|
43
|
+
waitForMessage(expectedFields, status) {
|
|
44
|
+
const processedMessageEntry = this.checkForMessage(expectedFields, status);
|
|
47
45
|
if (processedMessageEntry) {
|
|
48
46
|
return Promise.resolve(processedMessageEntry);
|
|
49
47
|
}
|
|
@@ -53,7 +51,7 @@ class HandlerSpy {
|
|
|
53
51
|
});
|
|
54
52
|
this.spyPromises.push({
|
|
55
53
|
promise: spyPromise,
|
|
56
|
-
|
|
54
|
+
status,
|
|
57
55
|
fields: expectedFields,
|
|
58
56
|
// @ts-ignore
|
|
59
57
|
resolve,
|
|
@@ -83,7 +81,7 @@ class HandlerSpy {
|
|
|
83
81
|
.substring(7)}`;
|
|
84
82
|
this.messageBuffer.set(cacheId, resolvedProcessingResult);
|
|
85
83
|
const foundPromise = this.spyPromises.find((spyPromise) => {
|
|
86
|
-
return this.messageMatchesFilter(resolvedProcessingResult, spyPromise.fields, spyPromise.
|
|
84
|
+
return this.messageMatchesFilter(resolvedProcessingResult, spyPromise.fields, spyPromise.status);
|
|
87
85
|
});
|
|
88
86
|
if (foundPromise) {
|
|
89
87
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerSpy.js","sourceRoot":"","sources":["../../../lib/queues/HandlerSpy.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"HandlerSpy.js","sourceRoot":"","sources":["../../../lib/queues/HandlerSpy.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,16 @@ export interface QueueConsumer {
|
|
|
5
5
|
start(): Promise<unknown>;
|
|
6
6
|
close(): Promise<unknown>;
|
|
7
7
|
}
|
|
8
|
-
export type MessageProcessingResult =
|
|
8
|
+
export type MessageProcessingResult = {
|
|
9
|
+
status: 'retryLater';
|
|
10
|
+
} | {
|
|
11
|
+
status: 'consumed' | 'published';
|
|
12
|
+
skippedAsDuplicate?: boolean;
|
|
13
|
+
} | {
|
|
14
|
+
status: 'error';
|
|
15
|
+
errorReason: 'invalidMessage' | 'handlerError' | 'retryLaterExceeded';
|
|
16
|
+
};
|
|
17
|
+
export type MessageProcessingResultStatus = MessageProcessingResult['status'];
|
|
9
18
|
export interface SyncPublisher<MessagePayloadType extends object, MessageOptions> {
|
|
10
19
|
handlerSpy: PublicHandlerSpy<MessagePayloadType>;
|
|
11
20
|
publish(message: MessagePayloadType, options: MessageOptions): void;
|
|
@@ -3,6 +3,7 @@ import type { ZodSchema } from 'zod';
|
|
|
3
3
|
import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes';
|
|
4
4
|
import type { MessageHandlerConfig } from '../queues/HandlerContainer';
|
|
5
5
|
import type { HandlerSpy, HandlerSpyParams } from '../queues/HandlerSpy';
|
|
6
|
+
import type { MessageDeduplicationConfig } from '../message-deduplication/messageDeduplicationTypes';
|
|
6
7
|
import type { MessageProcessingResult, TransactionObservabilityManager } from './MessageQueueTypes';
|
|
7
8
|
export type QueueDependencies = {
|
|
8
9
|
errorReporter: ErrorReporter;
|
|
@@ -27,9 +28,26 @@ export type ProcessedMessageMetadata<MessagePayloadSchemas extends object = obje
|
|
|
27
28
|
*/
|
|
28
29
|
message: MessagePayloadSchemas | null;
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* Name of the queue processing the message
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
+
queueName: string;
|
|
34
|
+
/**
|
|
35
|
+
* The timestamp when the message was sent initially, in milliseconds since the epoch
|
|
36
|
+
*/
|
|
37
|
+
messageTimestamp: number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* The timestamp when the processing of the message began, in milliseconds since the epoch
|
|
40
|
+
* Note: for publishers the value may be smaller than messageTimestamp
|
|
41
|
+
*/
|
|
42
|
+
messageProcessingStartTimestamp: number;
|
|
43
|
+
/**
|
|
44
|
+
* The timestamp when the processing of the message ended, in milliseconds since the epoch
|
|
45
|
+
*/
|
|
46
|
+
messageProcessingEndTimestamp: number;
|
|
47
|
+
/**
|
|
48
|
+
* ID used for the message deduplication, in case it's enabled
|
|
49
|
+
*/
|
|
50
|
+
messageDeduplicationId?: string;
|
|
33
51
|
};
|
|
34
52
|
export interface MessageMetricsManager<MessagePayloadSchemas extends object = object> {
|
|
35
53
|
/**
|
|
@@ -46,10 +64,13 @@ export type CommonQueueOptions = {
|
|
|
46
64
|
messageTypeField: string;
|
|
47
65
|
messageIdField?: string;
|
|
48
66
|
messageTimestampField?: string;
|
|
67
|
+
messageDeduplicationIdField?: string;
|
|
68
|
+
messageDeduplicationOptionsField?: string;
|
|
49
69
|
handlerSpy?: HandlerSpy<object> | HandlerSpyParams | boolean;
|
|
50
70
|
logMessages?: boolean;
|
|
51
71
|
deletionConfig?: DeletionConfig;
|
|
52
72
|
payloadStoreConfig?: PayloadStoreConfig;
|
|
73
|
+
messageDeduplicationConfig?: MessageDeduplicationConfig;
|
|
53
74
|
};
|
|
54
75
|
export type CommonCreationConfigType = {
|
|
55
76
|
updateAttributesIfExists?: boolean;
|
|
@@ -68,6 +89,7 @@ type ExistingQueueOptions<QueueLocatorType extends object> = {
|
|
|
68
89
|
export type QueueOptions<CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object> = CommonQueueOptions & (NewQueueOptions<CreationConfigType> & ExistingQueueOptions<QueueLocatorType>);
|
|
69
90
|
export type QueuePublisherOptions<CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object, MessagePayloadSchemas extends object> = QueueOptions<CreationConfigType, QueueLocatorType> & {
|
|
70
91
|
messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
|
|
92
|
+
enablePublisherDeduplication?: boolean;
|
|
71
93
|
};
|
|
72
94
|
export type DeadLetterQueueOptions<CreationConfigType extends object, QueueLocatorType extends object, DeadLetterQueueIntegrationOptions extends object> = {
|
|
73
95
|
deletionConfig?: DeletionConfig;
|
|
@@ -76,5 +98,6 @@ export type QueueConsumerOptions<CreationConfigType extends object, QueueLocator
|
|
|
76
98
|
handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
|
|
77
99
|
deadLetterQueue?: DeadLetterQueueOptions<DeadLetterQueueCreationConfigType, DeadLetterQueueQueueLocatorType, DeadLetterQueueIntegrationOptions>;
|
|
78
100
|
maxRetryDuration?: number;
|
|
101
|
+
enableConsumerDeduplication?: boolean;
|
|
79
102
|
};
|
|
80
103
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@lokalise/node-core": "^13.3.0",
|
|
29
|
-
"@message-queue-toolkit/schemas": "^
|
|
29
|
+
"@message-queue-toolkit/schemas": "^5.0.0",
|
|
30
30
|
"fast-equals": "^5.0.1",
|
|
31
31
|
"json-stream-stringify": "^3.1.6",
|
|
32
32
|
"tmp": "^0.2.3",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"@kibertoad/biome-config": "^1.2.1",
|
|
39
39
|
"@types/node": "^22.7.5",
|
|
40
40
|
"@types/tmp": "^0.2.6",
|
|
41
|
-
"@vitest/coverage-v8": "^
|
|
41
|
+
"@vitest/coverage-v8": "^3.0.7",
|
|
42
42
|
"awilix": "^12.0.1",
|
|
43
|
-
"awilix-manager": "^
|
|
43
|
+
"awilix-manager": "^6.0.0",
|
|
44
44
|
"del-cli": "^6.0.0",
|
|
45
45
|
"typescript": "^5.7.2",
|
|
46
|
-
"vitest": "^
|
|
46
|
+
"vitest": "^3.0.7"
|
|
47
47
|
},
|
|
48
48
|
"homepage": "https://github.com/kibertoad/message-queue-toolkit",
|
|
49
49
|
"repository": {
|