@message-queue-toolkit/sqs 22.3.0 → 22.5.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 CHANGED
@@ -2,12 +2,13 @@ export { SqsConsumerErrorResolver } from './errors/SqsConsumerErrorResolver.ts';
2
2
  export { FakeConsumerErrorResolver } from './fakes/FakeConsumerErrorResolver.ts';
3
3
  export type { SQSConsumerDependencies, SQSConsumerOptions } from './sqs/AbstractSqsConsumer.ts';
4
4
  export { AbstractSqsConsumer } from './sqs/AbstractSqsConsumer.ts';
5
- export type { SQSMessageOptions } from './sqs/AbstractSqsPublisher.ts';
5
+ export type { SQSMessageOptions, SQSPublisherOptions } from './sqs/AbstractSqsPublisher.ts';
6
6
  export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from './sqs/AbstractSqsPublisher.ts';
7
- export { type ExtraSQSCreationParams, SQS_MESSAGE_MAX_SIZE, SQS_RESOURCE_ANY, SQS_RESOURCE_CURRENT_QUEUE, type SQSCreationConfig, type SQSDependencies, type SQSPolicyConfig, type SQSQueueLocatorType, } from './sqs/AbstractSqsService.ts';
7
+ export { type ExtraSQSCreationParams, SQS_MESSAGE_MAX_SIZE, SQS_RESOURCE_ANY, SQS_RESOURCE_CURRENT_QUEUE, type SQSCreationConfig, type SQSDependencies, type SQSOptions, type SQSPolicyConfig, type SQSQueueConfig, type SQSQueueLocatorType, } from './sqs/AbstractSqsService.ts';
8
8
  export type { CommonMessage, SQSMessage } from './types/MessageTypes.ts';
9
+ export { createEventBridgeSchema, createEventBridgeSchemas, type EventBridgeDetail, } from './utils/eventBridgeSchemaBuilder.ts';
9
10
  export { resolveOutgoingMessageAttributes } from './utils/messageUtils.ts';
10
11
  export { generateQueuePublishForTopicPolicy, generateWildcardSnsArn, generateWildcardSqsArn, } from './utils/sqsAttributeUtils.ts';
11
12
  export { deleteSqs, updateQueueAttributes } from './utils/sqsInitter.ts';
12
13
  export { deserializeSQSMessage } from './utils/sqsMessageDeserializer.ts';
13
- export { assertQueue, calculateOutgoingMessageSize, deleteQueue, getQueueAttributes, getQueueUrl, resolveQueueUrlFromLocatorConfig, } from './utils/sqsUtils.ts';
14
+ export { assertQueue, calculateOutgoingMessageSize, deleteQueue, detectFifoQueue, getQueueAttributes, getQueueUrl, isFifoQueueName, resolveQueueUrlFromLocatorConfig, validateFifoQueueConfiguration, validateFifoQueueName, } from './utils/sqsUtils.ts';
package/dist/index.js CHANGED
@@ -3,9 +3,10 @@ export { FakeConsumerErrorResolver } from "./fakes/FakeConsumerErrorResolver.js"
3
3
  export { AbstractSqsConsumer } from "./sqs/AbstractSqsConsumer.js";
4
4
  export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from "./sqs/AbstractSqsPublisher.js";
5
5
  export { SQS_MESSAGE_MAX_SIZE, SQS_RESOURCE_ANY, SQS_RESOURCE_CURRENT_QUEUE, } from "./sqs/AbstractSqsService.js";
6
+ export { createEventBridgeSchema, createEventBridgeSchemas, } from "./utils/eventBridgeSchemaBuilder.js";
6
7
  export { resolveOutgoingMessageAttributes } from "./utils/messageUtils.js";
7
8
  export { generateQueuePublishForTopicPolicy, generateWildcardSnsArn, generateWildcardSqsArn, } from "./utils/sqsAttributeUtils.js";
8
9
  export { deleteSqs, updateQueueAttributes } from "./utils/sqsInitter.js";
9
10
  export { deserializeSQSMessage } from "./utils/sqsMessageDeserializer.js";
10
- export { assertQueue, calculateOutgoingMessageSize, deleteQueue, getQueueAttributes, getQueueUrl, resolveQueueUrlFromLocatorConfig, } from "./utils/sqsUtils.js";
11
+ export { assertQueue, calculateOutgoingMessageSize, deleteQueue, detectFifoQueue, getQueueAttributes, getQueueUrl, isFifoQueueName, resolveQueueUrlFromLocatorConfig, validateFifoQueueConfiguration, validateFifoQueueName, } from "./utils/sqsUtils.js";
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAEL,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,GAK3B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,gCAAgC,GACjC,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAEL,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EACL,WAAW,EACX,4BAA4B,EAC5B,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,qBAAqB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import type { Either, ErrorResolver } from '@lokalise/node-core';
2
2
  import { type BarrierResult, type MessageSchemaContainer, type PreHandlingOutputs, type Prehandler, type QueueConsumer, type QueueConsumerDependencies, type QueueConsumerOptions } from '@message-queue-toolkit/core';
3
3
  import type { ConsumerOptions } from 'sqs-consumer';
4
+ import type { ZodSchema } from 'zod/v4';
4
5
  import type { SQSMessage } from '../types/MessageTypes.ts';
5
6
  import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService.ts';
6
7
  import { AbstractSqsService } from './AbstractSqsService.ts';
@@ -10,7 +11,7 @@ type SQSDeadLetterQueueOptions = {
10
11
  };
11
12
  };
12
13
  export type SQSConsumerDependencies = SQSDependencies & QueueConsumerDependencies;
13
- export type SQSConsumerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = QueueConsumerOptions<CreationConfigType, QueueLocatorType, SQSDeadLetterQueueOptions, MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SQSCreationConfig, SQSQueueLocatorType> & {
14
+ type SQSConsumerCommonOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = QueueConsumerOptions<CreationConfigType, QueueLocatorType, SQSDeadLetterQueueOptions, MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SQSCreationConfig, SQSQueueLocatorType> & {
14
15
  /**
15
16
  * Omitting properties which will be set internally ins this class
16
17
  * `visibilityTimeout` is also omitted to avoid conflicts with queue config
@@ -18,6 +19,34 @@ export type SQSConsumerOptions<MessagePayloadSchemas extends object, ExecutionCo
18
19
  consumerOverrides?: Omit<ConsumerOptions, 'sqs' | 'queueUrl' | 'handler' | 'handleMessageBatch' | 'visibilityTimeout' | 'messageAttributeNames' | 'messageSystemAttributeNames' | 'attributeNames'>;
19
20
  concurrentConsumersAmount?: number;
20
21
  };
22
+ type SQSConsumerFifoOptions = {
23
+ fifoQueue: true;
24
+ /**
25
+ * Interval in milliseconds between barrier re-checks during sleep period (FIFO queues only).
26
+ * FIFO queues sleep and recheck barriers instead of republishing messages to preserve order.
27
+ * The consumer will sleep and recheck for up to maxRetryDuration before moving to DLQ.
28
+ * Default: 5000 (5 seconds)
29
+ */
30
+ barrierSleepCheckIntervalInMsecs?: number;
31
+ /**
32
+ * Interval in milliseconds between visibility timeout extensions during barrier sleep (FIFO queues only).
33
+ * Extensions happen BEFORE each sleep chunk to prevent message from becoming visible during long waits.
34
+ * Should be less than the VisibilityTimeout to prevent message reclaim.
35
+ * Default: 30000 (30 seconds)
36
+ */
37
+ barrierVisibilityExtensionIntervalInMsecs?: number;
38
+ /**
39
+ * Duration in seconds to extend visibility timeout to during barrier sleep (FIFO queues only).
40
+ * Each extension sets visibility to this value from NOW (not cumulative).
41
+ * Should be significantly longer than barrierVisibilityExtensionIntervalInMsecs for safety buffer.
42
+ * Default: 90 (90 seconds, providing 60s buffer with 30s check interval)
43
+ */
44
+ barrierVisibilityTimeoutInSeconds?: number;
45
+ };
46
+ type SQSConsumerStandardQueueOptions = {
47
+ fifoQueue?: false;
48
+ };
49
+ export type SQSConsumerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = (SQSConsumerCommonOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType> & SQSConsumerFifoOptions) | (SQSConsumerCommonOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType> & SQSConsumerStandardQueueOptions);
21
50
  export declare abstract class AbstractSqsConsumer<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput = undefined, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType, ConsumerOptionsType extends SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType> = SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType>> extends AbstractSqsService<MessagePayloadType, QueueLocatorType, CreationConfigType, ConsumerOptionsType, SQSConsumerDependencies, ExecutionContext, PrehandlerOutput> implements QueueConsumer {
22
51
  private consumers;
23
52
  private readonly concurrentConsumersAmount;
@@ -27,6 +56,10 @@ export declare abstract class AbstractSqsConsumer<MessagePayloadType extends obj
27
56
  private readonly deadLetterQueueOptions?;
28
57
  private readonly isDeduplicationEnabled;
29
58
  private maxRetryDuration;
59
+ private cachedContentBasedDeduplication?;
60
+ private readonly barrierSleepCheckIntervalInMsecs;
61
+ private readonly barrierVisibilityExtensionIntervalInMsecs;
62
+ private readonly barrierVisibilityTimeoutInSeconds;
30
63
  protected deadLetterQueueUrl?: string;
31
64
  protected readonly errorResolver: ErrorResolver;
32
65
  protected readonly executionContext: ExecutionContext;
@@ -38,12 +71,43 @@ export declare abstract class AbstractSqsConsumer<MessagePayloadType extends obj
38
71
  close(abort?: boolean): Promise<void>;
39
72
  private createConsumer;
40
73
  private handleRetryLater;
74
+ /**
75
+ * Sleep and periodically recheck barrier for FIFO queues.
76
+ * This method implements the barrier sleep mechanism to avoid unnecessary AWS retries.
77
+ */
78
+ private sleepAndRecheckBarrier;
79
+ /**
80
+ * Sleep for the specified duration while optionally extending visibility timeout to prevent message reclaim.
81
+ * AWS SQS will reclaim messages if visibility timeout expires during processing.
82
+ *
83
+ * Visibility extension strategy:
84
+ * - If heartbeatInterval is set and <= extension interval: rely on sqs-consumer's automatic extension
85
+ * - Otherwise: explicitly extend at configured intervals during sleep
86
+ *
87
+ * This prevents redundant API calls when heartbeatInterval already provides sufficient coverage.
88
+ */
89
+ private sleepWithVisibilityTimeoutExtension;
90
+ /**
91
+ * Determines whether to use async or sync path for building retry message params.
92
+ * For FIFO queues with locatorConfig, we need to fetch ContentBasedDeduplication from SQS.
93
+ */
94
+ private buildRetryMessageParamsWithDeduplicationCheck;
95
+ /**
96
+ * Builds SendMessageCommand parameters for retry, handling FIFO vs standard queues (synchronous)
97
+ */
98
+ private buildRetryMessageParams;
99
+ /**
100
+ * Builds FIFO retry message params when ContentBasedDeduplication attribute needs to be fetched from SQS.
101
+ * This is only needed when using locatorConfig (queue not created by this service).
102
+ * Caches the ContentBasedDeduplication value after first fetch to avoid repeated API calls.
103
+ */
104
+ private buildFifoRetryMessageParamsAsync;
41
105
  private stopExistingConsumers;
42
106
  private internalProcessMessage;
43
107
  protected processMessage(message: MessagePayloadType, messageType: string, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, any>): Promise<Either<'retryLater', 'success'>>;
44
108
  protected processPrehandlers(message: MessagePayloadType, messageType: string): Promise<PrehandlerOutput>;
45
109
  protected preHandlerBarrier<BarrierOutput>(message: MessagePayloadType, messageType: string, preHandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>;
46
- protected resolveSchema(message: MessagePayloadType): Either<Error, import("zod/v4").ZodType<MessagePayloadType, unknown, import("zod/v4/core").$ZodTypeInternals<MessagePayloadType, unknown>>>;
110
+ protected resolveSchema(message: MessagePayloadType): Either<Error, ZodSchema<MessagePayloadType>>;
47
111
  protected resolveNextFunction(preHandlers: Prehandler<MessagePayloadType, ExecutionContext, unknown>[], message: MessagePayloadType, index: number, preHandlerOutput: PrehandlerOutput, resolve: (value: PrehandlerOutput | PromiseLike<PrehandlerOutput>) => void, reject: (err: Error) => void): (preHandlerResult: import("@message-queue-toolkit/core").PrehandlerResult) => void;
48
112
  protected resolveMessageLog(message: MessagePayloadType, messageType: string): unknown;
49
113
  protected resolveMessage(message: SQSMessage): Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, import("@message-queue-toolkit/core").ResolvedMessage>;
@@ -1,4 +1,4 @@
1
- import { SendMessageCommand, SetQueueAttributesCommand } from '@aws-sdk/client-sqs';
1
+ import { ChangeMessageVisibilityCommand, SendMessageCommand, SetQueueAttributesCommand, } from '@aws-sdk/client-sqs';
2
2
  import { DeduplicationRequesterEnum, HandlerContainer, isMessageError, noopReleasableLock, parseMessage, } from '@message-queue-toolkit/core';
3
3
  import { Consumer } from 'sqs-consumer';
4
4
  import { hasOffloadedPayload } from "../utils/messageUtils.js";
@@ -11,6 +11,9 @@ const ABORT_EARLY_EITHER = {
11
11
  error: 'abort',
12
12
  };
13
13
  const DEFAULT_MAX_RETRY_DURATION = 4 * 24 * 60 * 60; // 4 days in seconds
14
+ const DEFAULT_BARRIER_SLEEP_CHECK_INTERVAL_IN_MSECS = 5000; // 5 seconds in milliseconds
15
+ const DEFAULT_BARRIER_VISIBILITY_EXTENSION_INTERVAL_IN_MSECS = 30000; // 30 seconds in milliseconds
16
+ const DEFAULT_BARRIER_VISIBILITY_TIMEOUT_IN_SECONDS = 90; // 90 seconds
14
17
  export class AbstractSqsConsumer extends AbstractSqsService {
15
18
  consumers;
16
19
  concurrentConsumersAmount;
@@ -20,6 +23,10 @@ export class AbstractSqsConsumer extends AbstractSqsService {
20
23
  deadLetterQueueOptions;
21
24
  isDeduplicationEnabled;
22
25
  maxRetryDuration;
26
+ cachedContentBasedDeduplication;
27
+ barrierSleepCheckIntervalInMsecs;
28
+ barrierVisibilityExtensionIntervalInMsecs;
29
+ barrierVisibilityTimeoutInSeconds;
23
30
  deadLetterQueueUrl;
24
31
  errorResolver;
25
32
  executionContext;
@@ -31,6 +38,15 @@ export class AbstractSqsConsumer extends AbstractSqsService {
31
38
  this.consumerOptionsOverride = options.consumerOverrides ?? {};
32
39
  this.deadLetterQueueOptions = options.deadLetterQueue;
33
40
  this.maxRetryDuration = options.maxRetryDuration ?? DEFAULT_MAX_RETRY_DURATION;
41
+ // Access FIFO-specific options (only available when fifoQueue: true)
42
+ const fifoOptions = options;
43
+ this.barrierSleepCheckIntervalInMsecs =
44
+ fifoOptions.barrierSleepCheckIntervalInMsecs ?? DEFAULT_BARRIER_SLEEP_CHECK_INTERVAL_IN_MSECS;
45
+ this.barrierVisibilityExtensionIntervalInMsecs =
46
+ fifoOptions.barrierVisibilityExtensionIntervalInMsecs ??
47
+ DEFAULT_BARRIER_VISIBILITY_EXTENSION_INTERVAL_IN_MSECS;
48
+ this.barrierVisibilityTimeoutInSeconds =
49
+ fifoOptions.barrierVisibilityTimeoutInSeconds ?? DEFAULT_BARRIER_VISIBILITY_TIMEOUT_IN_SECONDS;
34
50
  this.executionContext = executionContext;
35
51
  this.consumers = [];
36
52
  this.concurrentConsumersAmount = options.concurrentConsumersAmount ?? 1;
@@ -52,7 +68,8 @@ export class AbstractSqsConsumer extends AbstractSqsService {
52
68
  if (deletionConfig && creationConfig) {
53
69
  await deleteSqs(this.sqsClient, deletionConfig, creationConfig);
54
70
  }
55
- const result = await initSqs(this.sqsClient, locatorConfig, creationConfig);
71
+ // DLQ should match the type of the source queue (FIFO DLQ for FIFO source queue)
72
+ const result = await initSqs(this.sqsClient, locatorConfig, creationConfig, this.isFifoQueue);
56
73
  await this.sqsClient.send(new SetQueueAttributesCommand({
57
74
  QueueUrl: this.queueUrl,
58
75
  Attributes: {
@@ -66,7 +83,7 @@ export class AbstractSqsConsumer extends AbstractSqsService {
66
83
  }
67
84
  async start() {
68
85
  await this.init();
69
- this.stopExistingConsumers();
86
+ await this.stopExistingConsumers();
70
87
  const visibilityTimeout = await this.getQueueVisibilityTimeout();
71
88
  this.consumers = Array.from({ length: this.concurrentConsumersAmount }, () => this.createConsumer({ visibilityTimeout }));
72
89
  for (const consumer of this.consumers) {
@@ -78,7 +95,7 @@ export class AbstractSqsConsumer extends AbstractSqsService {
78
95
  }
79
96
  async close(abort) {
80
97
  await super.close();
81
- this.stopExistingConsumers(abort ?? false);
98
+ await this.stopExistingConsumers(abort ?? false);
82
99
  }
83
100
  createConsumer(options) {
84
101
  return Consumer.create({
@@ -86,7 +103,13 @@ export class AbstractSqsConsumer extends AbstractSqsService {
86
103
  queueUrl: this.queueUrl,
87
104
  visibilityTimeout: options.visibilityTimeout,
88
105
  messageAttributeNames: [`${PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX}*`],
106
+ // For FIFO queues, request system attributes needed for retry (MessageGroupId and MessageDeduplicationId)
107
+ messageSystemAttributeNames: this.isFifoQueue
108
+ ? ['MessageGroupId', 'MessageDeduplicationId']
109
+ : undefined,
89
110
  ...this.consumerOptionsOverride,
111
+ // Suppress FIFO warning (set after overrides to ensure it's not overridden)
112
+ suppressFifoWarning: this.isFifoQueue ? true : undefined,
90
113
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: fixme
91
114
  handleMessage: async (message) => {
92
115
  if (message === null)
@@ -124,7 +147,7 @@ export class AbstractSqsConsumer extends AbstractSqsService {
124
147
  // We don't want to discard message yet as we don't know if the other consumer will be able to process it successfully.
125
148
  // We're re-queueing the message, so it can be processed later.
126
149
  if (acquireLockResult.error) {
127
- await this.handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp);
150
+ await this.handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp, false);
128
151
  return message;
129
152
  }
130
153
  // While the consumer was waiting for a lock to be acquired, the message might have been processed
@@ -175,7 +198,7 @@ export class AbstractSqsConsumer extends AbstractSqsService {
175
198
  }
176
199
  if (result.error === 'retryLater') {
177
200
  await acquireLockResult.result?.release();
178
- await this.handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp);
201
+ await this.handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp, true);
179
202
  return message;
180
203
  }
181
204
  await acquireLockResult.result?.release();
@@ -189,13 +212,43 @@ export class AbstractSqsConsumer extends AbstractSqsService {
189
212
  },
190
213
  });
191
214
  }
192
- async handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp) {
215
+ async handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp, isHandlerRetry = true) {
216
+ /**
217
+ * For FIFO queues, we use a special retry approach to preserve message ordering.
218
+ * For handler/barrier retries: sleep and periodically re-check until barrier passes or max sleep exceeded
219
+ * For lock failures: throw error immediately to trigger AWS retry
220
+ */
221
+ if (this.isFifoQueue) {
222
+ // Check if retry is still within the allowed duration
223
+ if (this.shouldBeRetried(originalMessage, this.maxRetryDuration)) {
224
+ // Only use sleep-and-recheck for handler/barrier retries, not lock failures
225
+ if (isHandlerRetry) {
226
+ await this.sleepAndRecheckBarrier(message, originalMessage, parsedMessage, messageProcessingStartTimestamp);
227
+ return;
228
+ }
229
+ // For lock failures, throw error immediately
230
+ this.handleMessageProcessed({
231
+ message: parsedMessage,
232
+ processingResult: { status: 'retryLater' },
233
+ messageProcessingStartTimestamp,
234
+ queueName: this.queueName,
235
+ });
236
+ throw new Error('FIFO queue: Lock acquisition failed. Triggering AWS SQS retry to preserve message order.');
237
+ }
238
+ // Retry duration exceeded for FIFO queue
239
+ await this.failProcessing(message);
240
+ this.handleMessageProcessed({
241
+ message: parsedMessage,
242
+ processingResult: { status: 'error', errorReason: 'retryLaterExceeded' },
243
+ messageProcessingStartTimestamp,
244
+ queueName: this.queueName,
245
+ });
246
+ throw new Error('FIFO queue: Retry duration exceeded. Moving message to DLQ.');
247
+ }
248
+ // Standard queue handling: republish the message with delay
193
249
  if (this.shouldBeRetried(originalMessage, this.maxRetryDuration)) {
194
- await this.sqsClient.send(new SendMessageCommand({
195
- QueueUrl: this.queueUrl,
196
- DelaySeconds: this.getMessageRetryDelayInSeconds(originalMessage),
197
- MessageBody: JSON.stringify(this.updateInternalProperties(originalMessage)),
198
- }));
250
+ const sendMessageParams = await this.buildRetryMessageParamsWithDeduplicationCheck(message, originalMessage);
251
+ await this.sqsClient.send(new SendMessageCommand(sendMessageParams));
199
252
  this.handleMessageProcessed({
200
253
  message: parsedMessage,
201
254
  processingResult: { status: 'retryLater' },
@@ -213,12 +266,196 @@ export class AbstractSqsConsumer extends AbstractSqsService {
213
266
  });
214
267
  }
215
268
  }
216
- stopExistingConsumers(abort) {
217
- for (const consumer of this.consumers) {
218
- consumer.stop({
219
- abort,
269
+ /**
270
+ * Sleep and periodically recheck barrier for FIFO queues.
271
+ * This method implements the barrier sleep mechanism to avoid unnecessary AWS retries.
272
+ */
273
+ async sleepAndRecheckBarrier(message, originalMessage, parsedMessage, messageProcessingStartTimestamp) {
274
+ // Extract message type for barrier rechecks
275
+ // @ts-expect-error
276
+ const messageType = parsedMessage[this.messageTypeField];
277
+ // Sleep and periodically recheck barrier until maxRetryDuration is exceeded
278
+ while (this.shouldBeRetried(originalMessage, this.maxRetryDuration)) {
279
+ // Sleep for the check interval
280
+ await this.sleepWithVisibilityTimeoutExtension(message, this.barrierSleepCheckIntervalInMsecs);
281
+ // Re-check barrier
282
+ const result = await this.internalProcessMessage(parsedMessage, messageType).catch((err) => {
283
+ this.handleError(err);
284
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
285
+ return { error: err };
220
286
  });
287
+ // If barrier passed and message processed successfully, we're done
288
+ if ('result' in result && result.result === 'success') {
289
+ this.handleMessageProcessed({
290
+ message: originalMessage,
291
+ processingResult: { status: 'consumed' },
292
+ messageProcessingStartTimestamp,
293
+ queueName: this.queueName,
294
+ });
295
+ return;
296
+ }
297
+ // If handler threw an error (not just retryLater), rethrow it
298
+ if (result.error !== 'retryLater') {
299
+ this.handleMessageProcessed({
300
+ message: parsedMessage,
301
+ processingResult: { status: 'error', errorReason: 'handlerError' },
302
+ messageProcessingStartTimestamp,
303
+ queueName: this.queueName,
304
+ });
305
+ throw result.error;
306
+ }
307
+ // Barrier still not passing, continue sleeping
308
+ }
309
+ // Max retry duration exceeded, send to DLQ
310
+ await this.failProcessing(message);
311
+ this.handleMessageProcessed({
312
+ message: parsedMessage,
313
+ processingResult: { status: 'error', errorReason: 'retryLaterExceeded' },
314
+ messageProcessingStartTimestamp,
315
+ queueName: this.queueName,
316
+ });
317
+ throw new Error('FIFO queue: Retry duration exceeded. Moving message to DLQ.');
318
+ }
319
+ /**
320
+ * Sleep for the specified duration while optionally extending visibility timeout to prevent message reclaim.
321
+ * AWS SQS will reclaim messages if visibility timeout expires during processing.
322
+ *
323
+ * Visibility extension strategy:
324
+ * - If heartbeatInterval is set and <= extension interval: rely on sqs-consumer's automatic extension
325
+ * - Otherwise: explicitly extend at configured intervals during sleep
326
+ *
327
+ * This prevents redundant API calls when heartbeatInterval already provides sufficient coverage.
328
+ */
329
+ async sleepWithVisibilityTimeoutExtension(message, sleepDurationMs) {
330
+ // Check if heartbeatInterval is set and sufficient for our needs
331
+ // If heartbeatInterval <= extension interval, sqs-consumer will extend frequently enough
332
+ const heartbeatInterval = this.consumerOptionsOverride?.heartbeatInterval;
333
+ const extensionIntervalSeconds = this.barrierVisibilityExtensionIntervalInMsecs / 1000;
334
+ const shouldExplicitlyExtend = !heartbeatInterval || heartbeatInterval > extensionIntervalSeconds;
335
+ let remainingSleepMs = sleepDurationMs;
336
+ const startTime = Date.now();
337
+ while (remainingSleepMs > 0) {
338
+ // Extend visibility timeout BEFORE sleeping (not after) to prevent message from becoming visible
339
+ // Only extend explicitly if heartbeatInterval is not set or is too long
340
+ if (shouldExplicitlyExtend) {
341
+ try {
342
+ await this.sqsClient.send(new ChangeMessageVisibilityCommand({
343
+ QueueUrl: this.queueUrl,
344
+ ReceiptHandle: message.ReceiptHandle,
345
+ VisibilityTimeout: this.barrierVisibilityTimeoutInSeconds,
346
+ }));
347
+ }
348
+ catch (err) {
349
+ // Log error but don't fail - the message might have already been processed or deleted
350
+ this.logger.warn({
351
+ message: 'Failed to extend visibility timeout during barrier sleep',
352
+ error: err,
353
+ });
354
+ }
355
+ }
356
+ // Now sleep for the chunk
357
+ const sleepChunkMs = Math.min(remainingSleepMs, this.barrierVisibilityExtensionIntervalInMsecs);
358
+ await new Promise((resolve) => setTimeout(resolve, sleepChunkMs));
359
+ // Calculate remaining sleep time for next iteration
360
+ remainingSleepMs = sleepDurationMs - (Date.now() - startTime);
361
+ }
362
+ }
363
+ /**
364
+ * Determines whether to use async or sync path for building retry message params.
365
+ * For FIFO queues with locatorConfig, we need to fetch ContentBasedDeduplication from SQS.
366
+ */
367
+ async buildRetryMessageParamsWithDeduplicationCheck(message, originalMessage) {
368
+ // For FIFO queues, check if ContentBasedDeduplication is explicitly set in creationConfig
369
+ // If not explicitly set (undefined), we must fetch from SQS (async path)
370
+ if (this.isFifoQueue) {
371
+ const contentBasedDedup = this.creationConfig?.queue.Attributes?.ContentBasedDeduplication;
372
+ const isContentBasedDedupExplicit = contentBasedDedup === 'true' || contentBasedDedup === 'false';
373
+ if (!isContentBasedDedupExplicit) {
374
+ // Need to fetch ContentBasedDeduplication attribute from SQS (locatorConfig or not explicitly set)
375
+ return await this.buildFifoRetryMessageParamsAsync(message, originalMessage);
376
+ }
377
+ }
378
+ // Standard queue or FIFO with explicit ContentBasedDeduplication value - synchronous path
379
+ return this.buildRetryMessageParams(message, originalMessage);
380
+ }
381
+ /**
382
+ * Builds SendMessageCommand parameters for retry, handling FIFO vs standard queues (synchronous)
383
+ */
384
+ buildRetryMessageParams(message, originalMessage) {
385
+ const params = {
386
+ QueueUrl: this.queueUrl,
387
+ MessageBody: JSON.stringify(this.updateInternalProperties(originalMessage)),
388
+ };
389
+ if (this.isFifoQueue) {
390
+ // FIFO queues: preserve MessageGroupId, no DelaySeconds
391
+ const messageGroupId = message.Attributes?.MessageGroupId;
392
+ if (messageGroupId) {
393
+ params.MessageGroupId = messageGroupId;
394
+ }
395
+ // Check if ContentBasedDeduplication is enabled via creationConfig (synchronous)
396
+ // If enabled: body changes (retry count increment) generate new deduplication ID automatically
397
+ // If disabled: generate new MessageDeduplicationId for retry (append retry count to avoid duplication)
398
+ const isContentBasedDedup = this.creationConfig?.queue.Attributes?.ContentBasedDeduplication === 'true';
399
+ if (!isContentBasedDedup) {
400
+ const deduplicationId = message.Attributes?.MessageDeduplicationId;
401
+ if (deduplicationId) {
402
+ // Append retry count to create unique deduplication ID for each retry attempt
403
+ // This prevents SQS from treating retry as duplicate within 5-minute deduplication window
404
+ const retryCountValue = originalMessage
405
+ ._internalRetryLaterCount;
406
+ const retryCount = typeof retryCountValue === 'number' ? retryCountValue : 0;
407
+ params.MessageDeduplicationId = `${deduplicationId}-retry-${retryCount + 1}`;
408
+ }
409
+ }
410
+ // Note: FIFO queues do not support DelaySeconds at the message level.
411
+ // Messages will be retried immediately. Consider using visibility timeout
412
+ // or application-level delay if needed.
413
+ }
414
+ else {
415
+ // Standard queues: use DelaySeconds for exponential backoff
416
+ params.DelaySeconds = this.getMessageRetryDelayInSeconds(originalMessage);
221
417
  }
418
+ return params;
419
+ }
420
+ /**
421
+ * Builds FIFO retry message params when ContentBasedDeduplication attribute needs to be fetched from SQS.
422
+ * This is only needed when using locatorConfig (queue not created by this service).
423
+ * Caches the ContentBasedDeduplication value after first fetch to avoid repeated API calls.
424
+ */
425
+ async buildFifoRetryMessageParamsAsync(message, originalMessage) {
426
+ const params = {
427
+ QueueUrl: this.queueUrl,
428
+ MessageBody: JSON.stringify(this.updateInternalProperties(originalMessage)),
429
+ };
430
+ const messageGroupId = message.Attributes?.MessageGroupId;
431
+ if (messageGroupId) {
432
+ params.MessageGroupId = messageGroupId;
433
+ }
434
+ // Fetch ContentBasedDeduplication attribute from SQS (cached after first fetch)
435
+ let isContentBasedDedup = this.cachedContentBasedDeduplication;
436
+ if (isContentBasedDedup === undefined) {
437
+ const queueAttributes = await getQueueAttributes(this.sqsClient, this.queueUrl, [
438
+ 'ContentBasedDeduplication',
439
+ ]);
440
+ isContentBasedDedup = queueAttributes.result?.attributes?.ContentBasedDeduplication === 'true';
441
+ this.cachedContentBasedDeduplication = isContentBasedDedup;
442
+ }
443
+ if (!isContentBasedDedup) {
444
+ const deduplicationId = message.Attributes?.MessageDeduplicationId;
445
+ if (deduplicationId) {
446
+ // Append retry count to create unique deduplication ID for each retry attempt
447
+ const retryCountValue = originalMessage
448
+ ._internalRetryLaterCount;
449
+ const retryCount = typeof retryCountValue === 'number' ? retryCountValue : 0;
450
+ params.MessageDeduplicationId = `${deduplicationId}-retry-${retryCount + 1}`;
451
+ }
452
+ }
453
+ return params;
454
+ }
455
+ async stopExistingConsumers(abort) {
456
+ await Promise.all(this.consumers.map((consumer) => consumer.stop({
457
+ abort,
458
+ })));
222
459
  }
223
460
  async internalProcessMessage(message, messageType) {
224
461
  const preHandlerOutput = await this.processPrehandlers(message, messageType);
@@ -309,12 +546,13 @@ export class AbstractSqsConsumer extends AbstractSqsService {
309
546
  if (resolveMessageResult.error) {
310
547
  return ABORT_EARLY_EITHER;
311
548
  }
312
- const resolveSchemaResult = this.resolveSchema(resolveMessageResult.result.body);
549
+ const fullMessage = resolveMessageResult.result.body;
550
+ const resolveSchemaResult = this.resolveSchema(fullMessage);
313
551
  if (resolveSchemaResult.error) {
314
552
  this.handleError(resolveSchemaResult.error);
315
553
  return ABORT_EARLY_EITHER;
316
554
  }
317
- const deserializationResult = parseMessage(resolveMessageResult.result.body, resolveSchemaResult.result, this.errorResolver);
555
+ const deserializationResult = parseMessage(fullMessage, resolveSchemaResult.result, this.errorResolver);
318
556
  if (isMessageError(deserializationResult.error)) {
319
557
  this.handleError(deserializationResult.error);
320
558
  return ABORT_EARLY_EITHER;
@@ -324,16 +562,31 @@ export class AbstractSqsConsumer extends AbstractSqsService {
324
562
  return ABORT_EARLY_EITHER;
325
563
  }
326
564
  return {
327
- result: deserializationResult.result,
565
+ result: {
566
+ parsedMessage: deserializationResult.result.parsedMessage,
567
+ originalMessage: deserializationResult.result.originalMessage,
568
+ },
328
569
  };
329
570
  }
330
571
  async failProcessing(message) {
331
572
  if (!this.deadLetterQueueUrl)
332
573
  return;
333
- const command = new SendMessageCommand({
574
+ const params = {
334
575
  QueueUrl: this.deadLetterQueueUrl,
335
576
  MessageBody: message.Body,
336
- });
577
+ };
578
+ // For FIFO queues, preserve MessageGroupId when sending to DLQ
579
+ if (this.isFifoQueue) {
580
+ const messageGroupId = message.Attributes?.MessageGroupId;
581
+ if (messageGroupId) {
582
+ params.MessageGroupId = messageGroupId;
583
+ }
584
+ const deduplicationId = message.Attributes?.MessageDeduplicationId;
585
+ if (deduplicationId) {
586
+ params.MessageDeduplicationId = deduplicationId;
587
+ }
588
+ }
589
+ const command = new SendMessageCommand(params);
337
590
  await this.sqsClient.send(command);
338
591
  }
339
592
  async getQueueVisibilityTimeout() {
@@ -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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"}