@platformatic/kafka
Version:
Modern and performant client for Apache Kafka
30 lines (29 loc) • 1.37 kB
TypeScript
import { type CompressionAlgorithmValue } from '../../protocol/compression.ts';
import { type MessageToProduce } from '../../protocol/records.ts';
import { type BaseOptions, type TopicWithPartitionAndOffset } from '../base/types.ts';
import { type Serializers } from '../serde.ts';
export interface ProducerInfo {
producerId: bigint;
producerEpoch: number;
}
export interface ProduceResult {
offsets?: TopicWithPartitionAndOffset[];
unwritableNodes?: number[];
}
export type Partitioner<Key, Value, HeaderKey, HeaderValue> = (message: MessageToProduce<Key, Value, HeaderKey, HeaderValue>) => number;
export interface ProduceOptions<Key, Value, HeaderKey, HeaderValue> {
producerId?: bigint;
producerEpoch?: number;
idempotent?: boolean;
acks?: number;
compression?: CompressionAlgorithmValue;
partitioner?: Partitioner<Key, Value, HeaderKey, HeaderValue>;
autocreateTopics?: boolean;
repeatOnStaleMetadata?: boolean;
}
export type ProducerOptions<Key, Value, HeaderKey, HeaderValue> = BaseOptions & ProduceOptions<Key, Value, HeaderKey, HeaderValue> & {
serializers?: Partial<Serializers<Key, Value, HeaderKey, HeaderValue>>;
};
export type SendOptions<Key, Value, HeaderKey, HeaderValue> = {
messages: MessageToProduce<Key, Value, HeaderKey, HeaderValue>[];
} & ProduceOptions<Key, Value, HeaderKey, HeaderValue>;