@iamdeniz/aws-sqs-consumer
Version:
Advanced AWS SQS message consumer with retry, DLQ, batch processing, metrics, and middleware support
138 lines (137 loc) • 2.66 kB
TypeScript
/**
* Configuration options for metrics
*/
export default interface MetricsOptions {
/**
* Whether to emit metrics events
*/
enabled: boolean;
/**
* Whether to include message body in metrics events (can be sensitive data)
*/
includeMessageBody: boolean;
/**
* Whether to emit detailed performance metrics
*/
emitPerformanceMetrics: boolean;
}
/**
* Message processing metrics
*/
export interface MessageProcessingMetrics {
/**
* Message ID
*/
messageId: string | undefined;
/**
* Message group ID (for FIFO queues)
*/
groupId: string | undefined;
/**
* Time taken to process message in milliseconds
*/
processingTimeMs: number;
/**
* Number of retry attempts made
*/
retryCount: number;
/**
* Timestamp when processing started
*/
startTime: string;
/**
* Timestamp when processing completed
*/
endTime: string;
/**
* Original message body (if configured)
*/
body?: any;
}
/**
* Error metrics
*/
export interface ErrorMetrics {
/**
* Message ID
*/
messageId: string | undefined;
/**
* Error details
*/
error: any;
/**
* Retry attempt number
*/
retryAttempt: number;
/**
* Whether retry will be attempted
*/
willRetry: boolean;
/**
* Original message body (if configured)
*/
body?: any;
}
/**
* Batch processing metrics
*/
export interface BatchMetrics {
/**
* Number of messages in the batch
*/
messageCount: number;
/**
* Group ID for the batch
*/
groupId: string;
/**
* Time taken to process the batch in milliseconds
*/
processingTimeMs: number;
/**
* Timestamp when processing started
*/
startTime: string;
/**
* Timestamp when processing completed
*/
endTime: string;
}
/**
* Consumer metrics event
*/
export interface ConsumerMetrics {
/**
* Queue URL
*/
queueUrl: string;
/**
* Time active in milliseconds
*/
activeTimeMs: number;
/**
* Number of messages processed
*/
messagesProcessed: number;
/**
* Number of messages failed
*/
messagesFailed: number;
/**
* Number of messages sent to DLQ
*/
messagesSentToDlq: number;
/**
* Number of retries performed
*/
retryCount: number;
/**
* Timestamp when consumer started
*/
startTime: string;
/**
* Average processing time per message in milliseconds
*/
averageProcessingTimeMs: number;
}