@message-queue-toolkit/sqs 24.2.1 → 25.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/LICENSE +21 -0
- package/README.md +83 -6
- package/dist/sqs/AbstractSqsConsumer.d.ts +55 -4
- package/dist/sqs/AbstractSqsConsumer.js +83 -5
- package/dist/sqs/AbstractSqsConsumer.js.map +1 -1
- package/dist/sqs/AbstractSqsPublisher.d.ts +2 -1
- package/dist/sqs/AbstractSqsPublisher.js +30 -8
- package/dist/sqs/AbstractSqsPublisher.js.map +1 -1
- package/dist/sqs/AbstractSqsService.d.ts +2 -0
- package/dist/sqs/AbstractSqsService.js +3 -1
- package/dist/sqs/AbstractSqsService.js.map +1 -1
- package/dist/utils/sqsUtils.d.ts +2 -2
- package/dist/utils/sqsUtils.js +2 -2
- package/package.json +81 -77
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Igor Savin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ for publishing and consuming messages from both standard and FIFO SQS queues.
|
|
|
24
24
|
- [Message Retry Logic](#message-retry-logic)
|
|
25
25
|
- [Message Deduplication](#message-deduplication)
|
|
26
26
|
- [Payload Offloading](#payload-offloading)
|
|
27
|
+
- [Message Compression](#message-compression)
|
|
27
28
|
- [Message Handlers](#message-handlers)
|
|
28
29
|
- [Pre-handlers and Barriers](#pre-handlers-and-barriers)
|
|
29
30
|
- [Handler Spies](#handler-spies)
|
|
@@ -62,6 +63,7 @@ npm install @message-queue-toolkit/sqs @message-queue-toolkit/core
|
|
|
62
63
|
- ✅ **Handler spies** for testing
|
|
63
64
|
- ✅ **Pre-handlers and barriers** for complex message processing
|
|
64
65
|
- ✅ **Automatic queue creation** with validation
|
|
66
|
+
- ✅ **Message compression** with zstd via Node.js built-in `zlib` (Node.js >=22.15.0 required)
|
|
65
67
|
|
|
66
68
|
## Core Concepts
|
|
67
69
|
|
|
@@ -460,6 +462,9 @@ When using `locatorConfig`, you connect to an existing queue without creating it
|
|
|
460
462
|
maxPayloadSize: 1024 * 1024, // 1 MiB
|
|
461
463
|
},
|
|
462
464
|
|
|
465
|
+
// Optional - Compression (Node.js >=22.15.0 required)
|
|
466
|
+
codec: MessageCodecEnum.ZSTD, // Compress every outgoing message with zstd
|
|
467
|
+
|
|
463
468
|
// Optional - Deletion
|
|
464
469
|
deletionConfig: {
|
|
465
470
|
deleteIfExists: false, // Delete queue on init
|
|
@@ -512,6 +517,13 @@ When using `locatorConfig`, you connect to an existing queue without creating it
|
|
|
512
517
|
},
|
|
513
518
|
},
|
|
514
519
|
|
|
520
|
+
// Optional - Long Polling (SQS ReceiveMessage WaitTimeSeconds, 0–20)
|
|
521
|
+
// Defaults to 20 (full long polling). Cuts empty-receive cost, AWS API
|
|
522
|
+
// churn, and tail latency vs. short polling. Set to 0 to opt into short
|
|
523
|
+
// polling — common for tests that assert on "message was NOT processed"
|
|
524
|
+
// scenarios, or for niche prod workloads where per-poll latency dominates.
|
|
525
|
+
consumerPollingWaitTimeSeconds: 20,
|
|
526
|
+
|
|
515
527
|
// Optional - Consumer Behavior
|
|
516
528
|
consumerOverrides: {
|
|
517
529
|
batchSize: 10, // Messages per receive (1-10)
|
|
@@ -531,6 +543,9 @@ When using `locatorConfig`, you connect to an existing queue without creating it
|
|
|
531
543
|
payloadStore: s3Store,
|
|
532
544
|
},
|
|
533
545
|
|
|
546
|
+
// Note: consumers have no `codec` option — auto-detection handles built-in zstd.
|
|
547
|
+
// Use `codecs: [{ name: 'lz4', handler: new LZ4Handler() }]` only for custom codecs.
|
|
548
|
+
|
|
534
549
|
// Optional - Other
|
|
535
550
|
logMessages: false,
|
|
536
551
|
handlerSpy: true,
|
|
@@ -781,16 +796,78 @@ await publisher.publish({
|
|
|
781
796
|
})
|
|
782
797
|
```
|
|
783
798
|
|
|
784
|
-
**How it works:**
|
|
799
|
+
**How it works (without codec):**
|
|
785
800
|
1. Publisher checks message size before sending
|
|
786
|
-
2. If size exceeds `
|
|
787
|
-
3.
|
|
788
|
-
4.
|
|
789
|
-
5.
|
|
790
|
-
|
|
801
|
+
2. If size exceeds `messageSizeThreshold`, serializes and stores payload in S3
|
|
802
|
+
3. Sends a lightweight pointer message to SQS instead
|
|
803
|
+
4. Consumer detects the pointer, fetches payload from S3
|
|
804
|
+
5. Processes message with full payload
|
|
805
|
+
|
|
806
|
+
**How it works (with codec — compress + offload):**
|
|
807
|
+
1. Publisher compresses the serialized message with zstd **once**, up-front
|
|
808
|
+
2. If the **compressed** size exceeds `messageSizeThreshold`, stores the compressed bytes in S3 and sends a pointer
|
|
809
|
+
3. If the compressed size fits within the threshold, sends the message inline as a codec envelope
|
|
810
|
+
4. Consumer fetches the pointer payload as raw bytes, decompresses, then processes as normal
|
|
811
|
+
|
|
812
|
+
The codec embedded in `payloadRef.codec` tells the consumer which algorithm to use — no `codec` option is needed on the consumer.
|
|
791
813
|
|
|
792
814
|
**Note:** Payload cleanup is the responsibility of the store (e.g., S3 lifecycle policies).
|
|
793
815
|
|
|
816
|
+
### Message Compression
|
|
817
|
+
|
|
818
|
+
Compress message bodies with zstd using the Node.js built-in `zlib` module. Requires **Node.js >=22.15.0**.
|
|
819
|
+
|
|
820
|
+
The codec implementation ships inside `@message-queue-toolkit/core` — no extra package to install. Compression is opt-in: it is only active when you set the `codec` option on a publisher.
|
|
821
|
+
|
|
822
|
+
Compressed messages are **self-describing**: the codec is embedded in the message envelope (`{ __mqtCodec: 'zstd', __mqtData: '<base64>', ...preserved fields }`), so a consumer without `codec` set will still decompress automatically via envelope detection.
|
|
823
|
+
|
|
824
|
+
> **Roll out consumers before publishers.** Auto-detection only works on a consumer running a library version that supports the codec. Upgrade and deploy all consumers of a queue **first** (they keep handling plain messages unchanged), and only then enable `codec` on publishers. A publisher emitting compressed messages to a consumer on an older library version — or to a consumer missing a required custom codec — will fail to process those messages. Such a missing-codec failure is treated as a **retriable** error (a misconfiguration, not a poison message): the message stays on the queue and is retried until the codec is registered, rather than being dropped or sent to the DLQ. This holds for both inline and offloaded compressed messages.
|
|
825
|
+
|
|
826
|
+
#### Publisher
|
|
827
|
+
|
|
828
|
+
```typescript
|
|
829
|
+
import { MessageCodecEnum } from '@message-queue-toolkit/core'
|
|
830
|
+
|
|
831
|
+
class MyPublisher extends AbstractSqsPublisher<SupportedMessages> {
|
|
832
|
+
constructor(deps: SQSDependencies) {
|
|
833
|
+
super(deps, {
|
|
834
|
+
codec: MessageCodecEnum.ZSTD, // compress every outgoing message
|
|
835
|
+
creationConfig: { queue: { QueueName: 'my-queue' } },
|
|
836
|
+
// ...
|
|
837
|
+
})
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
```
|
|
841
|
+
|
|
842
|
+
#### Consumer
|
|
843
|
+
|
|
844
|
+
```typescript
|
|
845
|
+
class MyConsumer extends AbstractSqsConsumer<SupportedMessages, ExecutionContext> {
|
|
846
|
+
constructor(deps: SQSConsumerDependencies) {
|
|
847
|
+
super(deps, {
|
|
848
|
+
// No codec option needed for built-in zstd — auto-detection handles it.
|
|
849
|
+
// For a custom codec: codecs: [{ name: 'lz4', handler: new LZ4Handler() }]
|
|
850
|
+
creationConfig: { queue: { QueueName: 'my-queue' } },
|
|
851
|
+
handlers: new MessageHandlerConfigBuilder<SupportedMessages, ExecutionContext>()
|
|
852
|
+
.addConfig(MySchema, myHandler)
|
|
853
|
+
.build(),
|
|
854
|
+
}, executionContext)
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
#### Notes
|
|
860
|
+
|
|
861
|
+
- Compression is applied **after** schema validation and **before** the SQS `SendMessage` call.
|
|
862
|
+
- The message is compressed **exactly once**, regardless of whether payload offloading is also configured. When both features are active: the payload is compressed first, and the decision to offload is made against the **codec envelope wire size** (base64-encoded compressed bytes + JSON framing) rather than the raw or compressed byte count. This means smaller payloads after compression may stay inline and never touch S3.
|
|
863
|
+
- The compressed bytes are **never re-compressed** when sent inline — the codec envelope is built directly from the first (and only) compression pass.
|
|
864
|
+
- Compressed payloads are still subject to the SQS 256 KB message size limit. Without a payload store, an inline codec envelope that still exceeds 256 KB is rejected by AWS at send time — exactly as an oversized uncompressed message would be. For messages that remain oversized after compression, combine with [Payload Offloading](#payload-offloading). The compressed payload is then stored in S3 and the `payloadRef.codec` field records the algorithm so the consumer can decompress after retrieval without any extra configuration.
|
|
865
|
+
- On the consumer side, decompression is **buffer-based** (not streamed): an offloaded compressed payload is fetched in full and decompressed in memory before `JSON.parse`. The decompressed size is bounded by `ZstdCodecHandler`'s `maxDecompressedBytes` (default 100 MiB), which also guards against decompression-bomb inputs.
|
|
866
|
+
- Uses `MessageCodecEnum.ZSTD` (value `'zstd'`). You can use the string literal or the enum — both satisfy the `MessageCodec` type.
|
|
867
|
+
- **`skipCompressionBelow`** (default `512`): minimum UTF-8 byte size a message must reach before compression is applied. Messages strictly below this threshold are sent as plain JSON — small payloads often expand when compressed due to framing overhead. Set to `0` to compress every message regardless of size. Example: `{ codec: MessageCodecEnum.ZSTD, skipCompressionBelow: 1024 }`.
|
|
868
|
+
- **Routing/filtering fields are preserved.** The codec envelope carries the message's identity and routing fields (`id`, `timestamp`, `type`, and any deduplication fields) as plaintext siblings of `__mqtData` — the same fields an offloaded-payload pointer preserves. SNS subscription filter policies scoped to `MessageBody` therefore keep working on those fields. A filter policy that references **other** body fields will not match, because the rest of the payload is compressed inside `__mqtData`.
|
|
869
|
+
- A consumer that receives an envelope for a codec it has **not** registered (an unregistered custom codec) records it as an error rather than processing the partial envelope — register the codec via the `codecs` option.
|
|
870
|
+
|
|
794
871
|
### Message Handlers
|
|
795
872
|
|
|
796
873
|
Handlers process messages based on their type. Messages are routed to the appropriate handler using the discriminator field (configurable via `messageTypeResolver`):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Either, ErrorResolver } from '@lokalise/node-core';
|
|
2
2
|
import type { ProcessedMessageMetadata } from '@message-queue-toolkit/core';
|
|
3
|
-
import { type BarrierResult, type MessageSchemaContainer, type PreHandlingOutputs, type Prehandler, type QueueConsumer, type QueueConsumerDependencies, type QueueConsumerOptions } from '@message-queue-toolkit/core';
|
|
3
|
+
import { type BarrierResult, type MessageCodecRegistration, type MessageSchemaContainer, type PreHandlingOutputs, type Prehandler, type QueueConsumer, type QueueConsumerDependencies, type QueueConsumerOptions } from '@message-queue-toolkit/core';
|
|
4
4
|
import type { ConsumerOptions } from 'sqs-consumer';
|
|
5
5
|
import type { ZodSchema } from 'zod/v4';
|
|
6
6
|
import type { SQSMessage } from '../types/MessageTypes.ts';
|
|
@@ -14,10 +14,58 @@ type SQSDeadLetterQueueOptions = {
|
|
|
14
14
|
export type SQSConsumerDependencies = SQSDependencies & QueueConsumerDependencies;
|
|
15
15
|
type SQSConsumerCommonOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = QueueConsumerOptions<CreationConfigType, QueueLocatorType, SQSDeadLetterQueueOptions, MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SQSCreationConfig, SQSQueueLocatorType> & {
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Additional codecs to register on this consumer.
|
|
18
|
+
* Built-in codecs (e.g. `MessageCodecEnum.ZSTD`) are always registered automatically.
|
|
19
|
+
* Any incoming message whose `__mqtCodec` name is not in the registry causes an error.
|
|
20
|
+
*
|
|
21
|
+
* Use this to support custom codecs published by a corresponding publisher:
|
|
22
|
+
* @example
|
|
23
|
+
* const codec = { name: 'lz4', handler: new MyLz4Handler() }
|
|
24
|
+
* new MyConsumer(deps, { codecs: [codec] })
|
|
25
|
+
*/
|
|
26
|
+
codecs?: MessageCodecRegistration[];
|
|
27
|
+
/**
|
|
28
|
+
* Disables automatic codec-envelope detection on this consumer.
|
|
29
|
+
*
|
|
30
|
+
* By default, consumers inspect every incoming message body with `hasCodecEnvelopeShape`.
|
|
31
|
+
* If the body carries a `__mqtCodec` name plus a base64 `__mqtData` field, it is treated
|
|
32
|
+
* as compressed and decompressed before schema validation. Extra sibling fields are
|
|
33
|
+
* allowed (publishers copy `id`/`type`/… alongside the codec fields for broker-side
|
|
34
|
+
* filtering), so detection is presence-based, not an exact-shape match.
|
|
35
|
+
*
|
|
36
|
+
* Set this to `true` only if your message schema legitimately contains `__mqtCodec` and
|
|
37
|
+
* `__mqtData` fields and you do not want auto-detection to intercept them.
|
|
38
|
+
*
|
|
39
|
+
* **Warning:** with auto-detection disabled, a genuinely compressed message reaching
|
|
40
|
+
* this consumer is *not* decompressed — its raw envelope is handed straight to schema
|
|
41
|
+
* validation. Because the envelope carries preserved `id`/`type` siblings, a lenient
|
|
42
|
+
* (non-`.strict()`) schema may accept it as a valid-but-incomplete message instead of
|
|
43
|
+
* failing loudly. Only enable this on queues you are certain never receive compressed
|
|
44
|
+
* messages.
|
|
45
|
+
*
|
|
46
|
+
* @default false
|
|
47
|
+
*/
|
|
48
|
+
disableCodecAutoDetection?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Wait time in seconds the consumer passes to SQS ReceiveMessage (long-polling).
|
|
51
|
+
* AWS allows integer values 0–20; anything else throws a RangeError at
|
|
52
|
+
* construction time. Defaults to 20 (full long polling), which is almost
|
|
53
|
+
* always what you want in production — it cuts empty-receive cost, AWS API
|
|
54
|
+
* churn, and tail latency compared to short polling.
|
|
55
|
+
*
|
|
56
|
+
* Set to 0 to opt into short polling. Common reasons:
|
|
57
|
+
* - Test suites asserting on "message was NOT processed" scenarios that
|
|
58
|
+
* should not block 20s per poll cycle.
|
|
59
|
+
* - Prod workloads where per-poll latency genuinely matters more than
|
|
60
|
+
* long-poll efficiency (rare).
|
|
61
|
+
*/
|
|
62
|
+
consumerPollingWaitTimeSeconds?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Omitting properties which will be set internally in this class.
|
|
65
|
+
* `visibilityTimeout` is omitted to avoid conflicts with queue config.
|
|
66
|
+
* `waitTimeSeconds` is omitted in favor of `consumerPollingWaitTimeSeconds`.
|
|
19
67
|
*/
|
|
20
|
-
consumerOverrides?: Omit<ConsumerOptions, 'sqs' | 'queueUrl' | 'handler' | 'handleMessageBatch' | 'visibilityTimeout' | 'messageAttributeNames' | 'messageSystemAttributeNames' | 'attributeNames'>;
|
|
68
|
+
consumerOverrides?: Omit<ConsumerOptions, 'sqs' | 'queueUrl' | 'handler' | 'handleMessageBatch' | 'visibilityTimeout' | 'waitTimeSeconds' | 'messageAttributeNames' | 'messageSystemAttributeNames' | 'attributeNames'>;
|
|
21
69
|
concurrentConsumersAmount?: number;
|
|
22
70
|
};
|
|
23
71
|
type SQSConsumerFifoOptions = {
|
|
@@ -61,6 +109,9 @@ export declare abstract class AbstractSqsConsumer<MessagePayloadType extends obj
|
|
|
61
109
|
private readonly barrierSleepCheckIntervalInMsecs;
|
|
62
110
|
private readonly barrierVisibilityExtensionIntervalInMsecs;
|
|
63
111
|
private readonly barrierVisibilityTimeoutInSeconds;
|
|
112
|
+
private readonly consumerPollingWaitTimeSeconds;
|
|
113
|
+
/** Registry of codec name → handler. Seeded from all built-in codecs + options.codecs. */
|
|
114
|
+
private readonly codecRegistry;
|
|
64
115
|
protected deadLetterQueueUrl?: string;
|
|
65
116
|
protected readonly errorResolver: ErrorResolver;
|
|
66
117
|
protected readonly executionContext: ExecutionContext;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeMessageVisibilityCommand, SendMessageCommand, SetQueueAttributesCommand, } from '@aws-sdk/client-sqs';
|
|
2
|
-
import { DeduplicationRequesterEnum, HandlerContainer, isMessageError, noopReleasableLock, parseMessage, } from '@message-queue-toolkit/core';
|
|
2
|
+
import { DeduplicationRequesterEnum, getCodecName, HandlerContainer, hasCodecEnvelopeShape, isMessageError, KNOWN_CODECS, noopReleasableLock, parseMessage, resolveCodecHandler, } from '@message-queue-toolkit/core';
|
|
3
3
|
import { Consumer } from 'sqs-consumer';
|
|
4
4
|
import { hasOffloadedPayload } from "../utils/messageUtils.js";
|
|
5
5
|
import { deleteSqs, initSqs } from "../utils/sqsInitter.js";
|
|
@@ -14,6 +14,16 @@ const DEFAULT_MAX_RETRY_DURATION = 4 * 24 * 60 * 60; // 4 days in seconds
|
|
|
14
14
|
const DEFAULT_BARRIER_SLEEP_CHECK_INTERVAL_IN_MSECS = 5000; // 5 seconds in milliseconds
|
|
15
15
|
const DEFAULT_BARRIER_VISIBILITY_EXTENSION_INTERVAL_IN_MSECS = 30000; // 30 seconds in milliseconds
|
|
16
16
|
const DEFAULT_BARRIER_VISIBILITY_TIMEOUT_IN_SECONDS = 90; // 90 seconds
|
|
17
|
+
const DEFAULT_CONSUMER_POLLING_WAIT_TIME_SECONDS = 20; // 20 seconds (full SQS long-polling)
|
|
18
|
+
const MAX_CONSUMER_POLLING_WAIT_TIME_SECONDS = 20; // AWS SQS ReceiveMessage upper bound
|
|
19
|
+
function resolveConsumerPollingWaitTimeSeconds(value) {
|
|
20
|
+
if (value === undefined)
|
|
21
|
+
return DEFAULT_CONSUMER_POLLING_WAIT_TIME_SECONDS;
|
|
22
|
+
if (!Number.isInteger(value) || value < 0 || value > MAX_CONSUMER_POLLING_WAIT_TIME_SECONDS) {
|
|
23
|
+
throw new RangeError(`consumerPollingWaitTimeSeconds must be an integer between 0 and ${MAX_CONSUMER_POLLING_WAIT_TIME_SECONDS} (inclusive). Received: ${value}`);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
17
27
|
export class AbstractSqsConsumer extends AbstractSqsService {
|
|
18
28
|
consumers;
|
|
19
29
|
concurrentConsumersAmount;
|
|
@@ -27,6 +37,9 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
27
37
|
barrierSleepCheckIntervalInMsecs;
|
|
28
38
|
barrierVisibilityExtensionIntervalInMsecs;
|
|
29
39
|
barrierVisibilityTimeoutInSeconds;
|
|
40
|
+
consumerPollingWaitTimeSeconds;
|
|
41
|
+
/** Registry of codec name → handler. Seeded from all built-in codecs + options.codecs. */
|
|
42
|
+
codecRegistry;
|
|
30
43
|
deadLetterQueueUrl;
|
|
31
44
|
errorResolver;
|
|
32
45
|
executionContext;
|
|
@@ -54,6 +67,7 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
54
67
|
DEFAULT_BARRIER_VISIBILITY_EXTENSION_INTERVAL_IN_MSECS;
|
|
55
68
|
this.barrierVisibilityTimeoutInSeconds =
|
|
56
69
|
fifoOptions.barrierVisibilityTimeoutInSeconds ?? DEFAULT_BARRIER_VISIBILITY_TIMEOUT_IN_SECONDS;
|
|
70
|
+
this.consumerPollingWaitTimeSeconds = resolveConsumerPollingWaitTimeSeconds(options.consumerPollingWaitTimeSeconds);
|
|
57
71
|
this.executionContext = executionContext;
|
|
58
72
|
this.consumers = [];
|
|
59
73
|
this.concurrentConsumersAmount = options.concurrentConsumersAmount ?? 1;
|
|
@@ -63,6 +77,15 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
63
77
|
messageHandlers: options.handlers,
|
|
64
78
|
});
|
|
65
79
|
this.isDeduplicationEnabled = !!options.enableConsumerDeduplication;
|
|
80
|
+
// Build codec registry: always seed with all built-in codecs, then add user-supplied ones.
|
|
81
|
+
const registry = new Map();
|
|
82
|
+
for (const builtInName of KNOWN_CODECS) {
|
|
83
|
+
registry.set(builtInName, resolveCodecHandler(builtInName));
|
|
84
|
+
}
|
|
85
|
+
for (const registration of options.codecs ?? []) {
|
|
86
|
+
registry.set(getCodecName(registration), resolveCodecHandler(registration));
|
|
87
|
+
}
|
|
88
|
+
this.codecRegistry = registry;
|
|
66
89
|
}
|
|
67
90
|
async init() {
|
|
68
91
|
await super.init();
|
|
@@ -123,6 +146,8 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
123
146
|
? ['MessageGroupId', 'MessageDeduplicationId']
|
|
124
147
|
: undefined,
|
|
125
148
|
...this.consumerOptionsOverride,
|
|
149
|
+
// Keep polling wait controlled only by the top-level consumerPollingWaitTimeSeconds.
|
|
150
|
+
waitTimeSeconds: this.consumerPollingWaitTimeSeconds,
|
|
126
151
|
// Suppress FIFO warning (set after overrides to ensure it's not overridden)
|
|
127
152
|
suppressFifoWarning: this.isFifoQueue ? true : undefined,
|
|
128
153
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: fixme
|
|
@@ -130,7 +155,22 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
130
155
|
if (message === null)
|
|
131
156
|
return message;
|
|
132
157
|
const messageProcessingStartTimestamp = Date.now();
|
|
133
|
-
|
|
158
|
+
let deserializedMessage;
|
|
159
|
+
try {
|
|
160
|
+
deserializedMessage = await this.deserializeMessage(message);
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
// A throw out of deserialization — e.g. a message envelope (inline body or an
|
|
164
|
+
// offloaded-payload pointer) naming a codec this consumer has not registered —
|
|
165
|
+
// is terminal for this consumer. Treat it as an invalid message: the abort
|
|
166
|
+
// branch below routes it to the DLQ if one is configured. Retrying would be
|
|
167
|
+
// pointless — a missing-codec deployment misconfiguration is not fixed within
|
|
168
|
+
// the redelivery window, so the message would only burn its receive-count
|
|
169
|
+
// attempts (or, with no DLQ, spam the error reporter for the whole retention
|
|
170
|
+
// period) before ending up in the DLQ anyway.
|
|
171
|
+
this.handleError(err);
|
|
172
|
+
deserializedMessage = ABORT_EARLY_EITHER;
|
|
173
|
+
}
|
|
134
174
|
if (deserializedMessage.error === 'abort') {
|
|
135
175
|
await this.failProcessing(message);
|
|
136
176
|
const messageId = this.tryToExtractId(message);
|
|
@@ -520,17 +560,50 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
520
560
|
return ABORT_EARLY_EITHER;
|
|
521
561
|
}
|
|
522
562
|
// Empty content for whatever reason
|
|
523
|
-
if (!resolveMessageResult.result
|
|
563
|
+
if (!resolveMessageResult.result?.body) {
|
|
524
564
|
return ABORT_EARLY_EITHER;
|
|
525
565
|
}
|
|
526
566
|
if (hasOffloadedPayload(resolveMessageResult.result)) {
|
|
527
|
-
const retrieveOffloadedMessagePayloadResult = await this.retrieveOffloadedMessagePayload(resolveMessageResult.result.body)
|
|
567
|
+
const retrieveOffloadedMessagePayloadResult = await this.retrieveOffloadedMessagePayload(resolveMessageResult.result.body, (codecName) => {
|
|
568
|
+
const handler = this.codecRegistry.get(codecName);
|
|
569
|
+
if (!handler) {
|
|
570
|
+
// The pointer names a codec this consumer has not registered. Throwing here
|
|
571
|
+
// (outside retrieveOffloadedMessagePayload's catch) propagates to handleMessage,
|
|
572
|
+
// which treats it as an invalid message and routes it to the DLQ (if one is
|
|
573
|
+
// configured) so it can be redriven once the codec is deployed.
|
|
574
|
+
throw new Error(`No codec handler registered for "${codecName}". Register it via the consumer's \`codecs\` option.`);
|
|
575
|
+
}
|
|
576
|
+
return (data) => handler.decompress(data);
|
|
577
|
+
});
|
|
528
578
|
if (retrieveOffloadedMessagePayloadResult.error) {
|
|
529
579
|
this.handleError(retrieveOffloadedMessagePayloadResult.error);
|
|
530
580
|
return ABORT_EARLY_EITHER;
|
|
531
581
|
}
|
|
532
582
|
resolveMessageResult.result.body = retrieveOffloadedMessagePayloadResult.result;
|
|
533
583
|
}
|
|
584
|
+
else if (!this.disableCodecAutoDetection &&
|
|
585
|
+
hasCodecEnvelopeShape(resolveMessageResult.result.body)) {
|
|
586
|
+
const envelope = resolveMessageResult.result.body;
|
|
587
|
+
const handler = this.codecRegistry.get(envelope.__mqtCodec);
|
|
588
|
+
if (!handler) {
|
|
589
|
+
// Envelope-shaped body naming a codec this consumer has not registered. Throwing
|
|
590
|
+
// here propagates to handleMessage, which treats it as an invalid message and
|
|
591
|
+
// routes it to the DLQ (if one is configured) so it can be redriven once the codec
|
|
592
|
+
// is deployed. Throwing — rather than falling through — is essential: otherwise the
|
|
593
|
+
// envelope's preserved sibling fields (id, type, …) could satisfy a lenient schema
|
|
594
|
+
// and be processed as an incomplete message. Register the codec via the `codecs`
|
|
595
|
+
// option.
|
|
596
|
+
throw new Error(`Received a message compressed with codec "${envelope.__mqtCodec}", which is not registered on this consumer. Register it via the \`codecs\` option.`);
|
|
597
|
+
}
|
|
598
|
+
try {
|
|
599
|
+
const compressed = Buffer.from(envelope.__mqtData, 'base64');
|
|
600
|
+
resolveMessageResult.result.body = JSON.parse((await handler.decompress(compressed)).toString('utf8'));
|
|
601
|
+
}
|
|
602
|
+
catch (err) {
|
|
603
|
+
this.handleError(err);
|
|
604
|
+
return ABORT_EARLY_EITHER;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
534
607
|
return resolveMessageResult;
|
|
535
608
|
}
|
|
536
609
|
tryToExtractId(message) {
|
|
@@ -541,8 +614,13 @@ export class AbstractSqsConsumer extends AbstractSqsService {
|
|
|
541
614
|
}
|
|
542
615
|
const resolvedMessage = resolveMessageResult.result;
|
|
543
616
|
// Empty content for whatever reason
|
|
544
|
-
if (!resolvedMessage
|
|
617
|
+
if (!resolvedMessage?.body)
|
|
545
618
|
return ABORT_EARLY_EITHER;
|
|
619
|
+
// Best-effort id extraction for logging/metrics only — this runs on the raw (still
|
|
620
|
+
// possibly compressed) body. A codec envelope from a built-in publisher carries the
|
|
621
|
+
// id as a preserved plaintext sibling, so it is found here; a bare envelope (e.g. from
|
|
622
|
+
// the `compressMessageBody` helper) has no id and falls through to abort, which only
|
|
623
|
+
// means the id is absent from a log line — message processing is unaffected.
|
|
546
624
|
// @ts-expect-error
|
|
547
625
|
if (this.messageIdField in resolvedMessage.body) {
|
|
548
626
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSqsConsumer.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsConsumer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractSqsConsumer.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsConsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,8 @@ export declare abstract class AbstractSqsPublisher<MessagePayloadType extends ob
|
|
|
54
54
|
processMessage(): Promise<Either<'retryLater', 'success'>>;
|
|
55
55
|
protected isDeduplicationEnabledForMessage(message: MessagePayloadType): boolean;
|
|
56
56
|
protected resolveSchema(message: MessagePayloadType): Either<Error, ZodSchema<MessagePayloadType>>;
|
|
57
|
-
protected
|
|
57
|
+
protected calculateOutgoingMessageSize(message: MessagePayloadType): number;
|
|
58
|
+
protected sendMessage(payload: MessagePayloadType | OffloadedPayloadPointerPayload, options: SQSMessageOptions, preBuiltBody?: string): Promise<void>;
|
|
58
59
|
/**
|
|
59
60
|
* Resolves FIFO-specific options (MessageGroupId, MessageDeduplicationId)
|
|
60
61
|
*/
|
|
@@ -36,14 +36,31 @@ export class AbstractSqsPublisher extends AbstractSqsService {
|
|
|
36
36
|
try {
|
|
37
37
|
const messageProcessingStartTimestamp = Date.now();
|
|
38
38
|
const parsedMessage = messageSchemaResult.result.parse(message);
|
|
39
|
+
// Fast read-only pre-check: skip compression/offload for messages already known to
|
|
40
|
+
// be duplicates. This does NOT persist a dedup key, so a transient failure in the
|
|
41
|
+
// expensive work below leaves no key behind and the publish stays safely retriable.
|
|
42
|
+
if (await this.isMessageDuplicated(parsedMessage, DeduplicationRequesterEnum.Publisher)) {
|
|
43
|
+
this.handleMessageProcessed({
|
|
44
|
+
message: parsedMessage,
|
|
45
|
+
processingResult: { status: 'published', skippedAsDuplicate: true },
|
|
46
|
+
messageProcessingStartTimestamp,
|
|
47
|
+
queueName: this.queueName,
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
39
51
|
message = this.updateInternalProperties(message);
|
|
40
52
|
// Resolve FIFO options from original message BEFORE offloading
|
|
41
53
|
// (offloaded payload won't have user fields needed for messageGroupIdField)
|
|
42
54
|
const resolvedOptions = this.resolveFifoOptions(message, options);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
const { payload, preBuiltBody } = await this.prepareOutgoingPayload(message);
|
|
56
|
+
// Persist the dedup key only now — immediately before send — so the window in which
|
|
57
|
+
// a stored key plus a failed send could drop the message on retry stays as small as
|
|
58
|
+
// possible and no longer spans compression/offload (a transient failure there leaves
|
|
59
|
+
// no key behind). The pre-check above already skipped the expensive work for the
|
|
60
|
+
// common duplicate case; this check additionally closes the race where a concurrent
|
|
61
|
+
// publish stored the key in the meantime.
|
|
62
|
+
if ((await this.deduplicateMessage(parsedMessage, DeduplicationRequesterEnum.Publisher))
|
|
63
|
+
.isDuplicated) {
|
|
47
64
|
this.handleMessageProcessed({
|
|
48
65
|
message: parsedMessage,
|
|
49
66
|
processingResult: { status: 'published', skippedAsDuplicate: true },
|
|
@@ -52,7 +69,7 @@ export class AbstractSqsPublisher extends AbstractSqsService {
|
|
|
52
69
|
});
|
|
53
70
|
return;
|
|
54
71
|
}
|
|
55
|
-
await this.sendMessage(
|
|
72
|
+
await this.sendMessage(payload, resolvedOptions, preBuiltBody);
|
|
56
73
|
this.handleMessageProcessed({
|
|
57
74
|
message: parsedMessage,
|
|
58
75
|
processingResult: { status: 'published' },
|
|
@@ -99,12 +116,17 @@ export class AbstractSqsPublisher extends AbstractSqsService {
|
|
|
99
116
|
resolveSchema(message) {
|
|
100
117
|
return this.messageSchemaContainer.resolveSchema(message);
|
|
101
118
|
}
|
|
102
|
-
|
|
119
|
+
calculateOutgoingMessageSize(message) {
|
|
120
|
+
return calculateOutgoingMessageSize(message);
|
|
121
|
+
}
|
|
122
|
+
async sendMessage(payload, options, preBuiltBody) {
|
|
103
123
|
const attributes = resolveOutgoingMessageAttributes(payload);
|
|
104
|
-
//
|
|
124
|
+
// preBuiltBody is set when codec is active and the payload was not offloaded —
|
|
125
|
+
// it contains the already-compressed codec envelope, so we skip re-serialization.
|
|
126
|
+
const body = preBuiltBody ?? JSON.stringify(payload);
|
|
105
127
|
const command = new SendMessageCommand({
|
|
106
128
|
QueueUrl: this.queueUrl,
|
|
107
|
-
MessageBody:
|
|
129
|
+
MessageBody: body,
|
|
108
130
|
MessageAttributes: attributes,
|
|
109
131
|
...options,
|
|
110
132
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSqsPublisher.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsPublisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAGL,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AAIpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AAOnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAmD5D,MAAM,CAAC,MAAM,mCAAmC,GAAG,oBAAoB,CAAA;AACvE,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,mCAAmC,MAAM,CAAA;AAE5F,MAAM,OAAgB,oBACpB,SAAQ,kBAAsC;IAG7B,sBAAsB,CAA4C;IAClE,sBAAsB,CAAS;IAC/B,mBAAmB,CAAS;IAC5B,qBAAqB,CAAS;IACvC,WAAW,CAAgB;IAEnC,YAAY,YAA6B,EAAE,OAAgD;QACzF,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAA;QAClF,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAA;QACpE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;QACtD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAA;YACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,+BAA+B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE/D,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAA;YAEhD,+DAA+D;YAC/D,4EAA4E;YAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAEjE,MAAM,
|
|
1
|
+
{"version":3,"file":"AbstractSqsPublisher.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import type { CreateQueueRequest, SQSClient } from '@aws-sdk/client-sqs';
|
|
|
2
2
|
import type { BaseQueueLocatorType, QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
|
|
3
3
|
import { AbstractQueueService } from '@message-queue-toolkit/core';
|
|
4
4
|
import type { SQSMessage } from '../types/MessageTypes.ts';
|
|
5
|
+
export declare const SQS_MESSAGE_HARD_LIMIT: number;
|
|
6
|
+
export declare const SQS_MESSAGE_ATTRIBUTE_BUFFER: number;
|
|
5
7
|
export declare const SQS_MESSAGE_MAX_SIZE: number;
|
|
6
8
|
export declare const SQS_RESOURCE_ANY: unique symbol;
|
|
7
9
|
export declare const SQS_RESOURCE_CURRENT_QUEUE: unique symbol;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AbstractQueueService } from '@message-queue-toolkit/core';
|
|
2
2
|
import { deleteSqs, initSqs } from "../utils/sqsInitter.js";
|
|
3
3
|
// https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html
|
|
4
|
-
export const
|
|
4
|
+
export const SQS_MESSAGE_HARD_LIMIT = 1024 * 1024; // 1 MiB - AWS SQS total message size limit (body + attributes)
|
|
5
|
+
export const SQS_MESSAGE_ATTRIBUTE_BUFFER = 30 * 1024; // 30KB - reserved space for message attributes and overhead
|
|
6
|
+
export const SQS_MESSAGE_MAX_SIZE = SQS_MESSAGE_HARD_LIMIT - SQS_MESSAGE_ATTRIBUTE_BUFFER; // 994KB - maximum allowed message body size
|
|
5
7
|
export const SQS_RESOURCE_ANY = Symbol('any');
|
|
6
8
|
export const SQS_RESOURCE_CURRENT_QUEUE = Symbol('current_queue');
|
|
7
9
|
export class AbstractSqsService extends AbstractQueueService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSqsService.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE3D,kGAAkG;AAClG,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"AbstractSqsService.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE3D,kGAAkG;AAClG,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,+DAA+D;AACjH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,4DAA4D;AAClH,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,GAAG,4BAA4B,CAAA,CAAC,4CAA4C;AACtI,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;AAyDjE,MAAM,OAAgB,kBAWpB,SAAQ,oBAST;IACoB,SAAS,CAAW;IAEvC,mBAAmB;IACT,SAAS,CAAQ;IAC3B,mBAAmB;IACT,QAAQ,CAAQ;IAChB,QAAQ,CAAoB;IACnB,WAAW,CAAS;IAEvC,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,WAAW,GAAI,OAA0B,CAAC,SAAS,IAAI,KAAK,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CACrD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,WAAW,EAChB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACxB,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAEe,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
|
package/dist/utils/sqsUtils.d.ts
CHANGED
|
@@ -17,8 +17,8 @@ export declare function deleteQueue(client: SQSClient, queueName: string, waitFo
|
|
|
17
17
|
* Calculates the size of an outgoing SQS message.
|
|
18
18
|
*
|
|
19
19
|
* SQS imposes a 1 MiB limit on the total size of a message, which includes both the message body and any metadata (attributes).
|
|
20
|
-
* This function
|
|
21
|
-
*
|
|
20
|
+
* This function computes the size based solely on the message body. The reserved buffer for message attributes and overhead
|
|
21
|
+
* is accounted for in SQS_MESSAGE_ATTRIBUTE_BUFFER, which is subtracted from SQS_MESSAGE_HARD_LIMIT to derive SQS_MESSAGE_MAX_SIZE.
|
|
22
22
|
*
|
|
23
23
|
* Reference: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes
|
|
24
24
|
*/
|
package/dist/utils/sqsUtils.js
CHANGED
|
@@ -181,8 +181,8 @@ export async function deleteQueue(client, queueName, waitForConfirmation = true)
|
|
|
181
181
|
* Calculates the size of an outgoing SQS message.
|
|
182
182
|
*
|
|
183
183
|
* SQS imposes a 1 MiB limit on the total size of a message, which includes both the message body and any metadata (attributes).
|
|
184
|
-
* This function
|
|
185
|
-
*
|
|
184
|
+
* This function computes the size based solely on the message body. The reserved buffer for message attributes and overhead
|
|
185
|
+
* is accounted for in SQS_MESSAGE_ATTRIBUTE_BUFFER, which is subtracted from SQS_MESSAGE_HARD_LIMIT to derive SQS_MESSAGE_MAX_SIZE.
|
|
186
186
|
*
|
|
187
187
|
* Reference: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes
|
|
188
188
|
*/
|
package/package.json
CHANGED
|
@@ -1,78 +1,82 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
2
|
+
"name": "@message-queue-toolkit/sqs",
|
|
3
|
+
"version": "25.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "SQS adapter for message-queue-toolkit",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.0.0"
|
|
9
|
+
},
|
|
10
|
+
"maintainers": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Igor Savin",
|
|
13
|
+
"email": "kibertoad@gmail.com"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": "./dist/index.js",
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@lokalise/node-core": "^14.6.1",
|
|
24
|
+
"sqs-consumer": "^15.0.1"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@aws-sdk/client-sqs": "^3.1034.0",
|
|
28
|
+
"@message-queue-toolkit/core": ">=26.0.0",
|
|
29
|
+
"zod": ">=3.25.76 <5.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@aws-sdk/client-s3": "^3.812.0",
|
|
33
|
+
"@aws-sdk/client-sqs": "^3.1034.0",
|
|
34
|
+
"@biomejs/biome": "^2.3.8",
|
|
35
|
+
"@lokalise/biome-config": "^3.1.0",
|
|
36
|
+
"@lokalise/tsconfig": "^3.0.0",
|
|
37
|
+
"@types/node": "^25.0.2",
|
|
38
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
39
|
+
"awilix": "^13.0.3",
|
|
40
|
+
"awilix-manager": "^6.1.0",
|
|
41
|
+
"fauxqs": "^2.0.0",
|
|
42
|
+
"ioredis": "^5.6.1",
|
|
43
|
+
"rimraf": "^6.0.1",
|
|
44
|
+
"typescript": "^5.9.3",
|
|
45
|
+
"vitest": "^4.0.15",
|
|
46
|
+
"zod": "^4.1.13",
|
|
47
|
+
"@message-queue-toolkit/core": "26.0.0",
|
|
48
|
+
"@message-queue-toolkit/s3-payload-store": "3.1.0",
|
|
49
|
+
"@message-queue-toolkit/redis-message-deduplication-store": "2.2.0",
|
|
50
|
+
"@message-queue-toolkit/schemas": "7.1.0"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://github.com/kibertoad/message-queue-toolkit",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "git://github.com/kibertoad/message-queue-toolkit.git"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"message",
|
|
59
|
+
"queue",
|
|
60
|
+
"queues",
|
|
61
|
+
"abstract",
|
|
62
|
+
"common",
|
|
63
|
+
"utils",
|
|
64
|
+
"sqs"
|
|
65
|
+
],
|
|
66
|
+
"files": [
|
|
67
|
+
"README.md",
|
|
68
|
+
"LICENSE",
|
|
69
|
+
"dist/*"
|
|
70
|
+
],
|
|
71
|
+
"scripts": {
|
|
72
|
+
"build": "pnpm run clean && tsc --project tsconfig.build.json",
|
|
73
|
+
"clean": "rimraf dist",
|
|
74
|
+
"bench": "vitest run --config vitest.bench.config.ts --reporter=verbose",
|
|
75
|
+
"test": "vitest",
|
|
76
|
+
"test:coverage": "pnpm run test --coverage",
|
|
77
|
+
"lint": "biome check && tsc",
|
|
78
|
+
"lint:fix": "biome check --write .",
|
|
79
|
+
"docker:start": "docker compose up -d redis && if [ \"$QUEUE_BACKEND\" = \"localstack\" ]; then docker compose up -d --quiet-pull --wait localstack; fi",
|
|
80
|
+
"docker:stop": "docker compose down"
|
|
81
|
+
}
|
|
82
|
+
}
|