UNPKG

@message-queue-toolkit/kafka

Version:
48 lines (47 loc) 2.81 kB
import type { QueueConsumerDependencies } from '@message-queue-toolkit/core'; import { type ConsumeOptions, type ConsumerOptions } from '@platformatic/kafka'; import { AbstractKafkaService, type BaseKafkaOptions } from './AbstractKafkaService.ts'; import type { KafkaHandlerRouting } from './handler-routing/KafkaHandlerRoutingBuilder.ts'; import type { KafkaConfig, KafkaDependencies, TopicConfig } from './types.ts'; import { type KafkaMessageBatchOptions } from './utils/KafkaMessageBatchStream.js'; export type KafkaConsumerDependencies = KafkaDependencies & Pick<QueueConsumerDependencies, 'transactionObservabilityManager'>; export type KafkaBatchProcessingOptions<BatchProcessingEnabled> = BatchProcessingEnabled extends true ? { batchProcessingEnabled: true; batchProcessingOptions: KafkaMessageBatchOptions; } : { batchProcessingEnabled: false; batchProcessingOptions?: never; }; export type KafkaConsumerOptions<TopicsConfig extends TopicConfig[], ExecutionContext, BatchProcessingEnabled extends boolean> = BaseKafkaOptions & Omit<ConsumerOptions<string, object, string, string>, 'deserializers' | 'autocommit' | keyof KafkaConfig> & Omit<ConsumeOptions<string, object, string, string>, 'topics'> & KafkaBatchProcessingOptions<BatchProcessingEnabled> & { handlers: KafkaHandlerRouting<TopicsConfig, ExecutionContext, BatchProcessingEnabled>; }; export declare abstract class AbstractKafkaConsumer<TopicsConfig extends TopicConfig[], ExecutionContext, BatchProcessingEnabled extends boolean = false> extends AbstractKafkaService<TopicsConfig, KafkaConsumerOptions<TopicsConfig, ExecutionContext, BatchProcessingEnabled>> { private readonly consumer; private consumerStream?; private messageBatchStream?; private readonly transactionObservabilityManager; private readonly executionContext; constructor(dependencies: KafkaConsumerDependencies, options: KafkaConsumerOptions<TopicsConfig, ExecutionContext, BatchProcessingEnabled>, executionContext: ExecutionContext); /** * Returns true if all client's connections are currently connected and the client is connected to at least one broker. */ get isConnected(): boolean; /** * Returns `true` if the consumer is not closed, and it is currently an active member of a consumer group. * This method will return `false` during consumer group rebalancing. */ get isActive(): boolean; init(): Promise<void>; close(): Promise<void>; private resolveHandler; private consume; private parseMessages; private tryToConsumeWithRetries; private tryToConsume; private handleMessagesProcessed; private commit; private commitMessage; private handleResponseErrorOnCommit; private buildTransactionName; private getRequestContext; }