@pulzar/core
Version:
Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support
138 lines • 3.39 kB
TypeScript
import { EventAdapter, EventEnvelope, EventHandler, SubscribeOptions, SubscriptionHandle, AdapterStats, AdapterCapabilities, PublishResult, HealthStatus } from "../types";
interface KafkaConfig {
clientId?: string;
brokers: string[];
ssl?: boolean;
sasl?: {
mechanism: "plain" | "scram-sha-256" | "scram-sha-512" | "aws";
username?: string;
password?: string;
};
connectionTimeout?: number;
requestTimeout?: number;
retry?: {
retries?: number;
initialRetryTime?: number;
maxRetryTime?: number;
};
producer?: {
maxInFlightRequests?: number;
idempotent?: boolean;
transactionTimeout?: number;
allowAutoTopicCreation?: boolean;
};
consumer?: {
groupId: string;
sessionTimeout?: number;
rebalanceTimeout?: number;
heartbeatInterval?: number;
maxBytesPerPartition?: number;
maxBytes?: number;
allowAutoTopicCreation?: boolean;
maxWaitTimeInMs?: number;
fromBeginning?: boolean;
};
admin?: {
timeout?: number;
};
}
export declare class KafkaEventAdapter implements EventAdapter {
readonly name = "kafka";
readonly version = "1.0.0";
readonly capabilities: AdapterCapabilities;
private kafka;
private producer;
private consumer;
private admin;
private config;
private connected;
private subscriptions;
private stats;
constructor(config: KafkaConfig);
/**
* Connect to Kafka cluster
*/
connect(): Promise<void>;
/**
* Disconnect from Kafka
*/
disconnect(): Promise<void>;
/**
* Check if connected
*/
isConnected(): boolean;
/**
* Publish event to Kafka topic
*/
publish(subject: string, event: EventEnvelope): Promise<PublishResult>;
/**
* Subscribe to Kafka topic
*/
subscribe(subject: string, handler: EventHandler, options?: SubscribeOptions): Promise<SubscriptionHandle>;
/**
* Unsubscribe from Kafka topic
*/
unsubscribe(handle: SubscriptionHandle): Promise<void>;
/**
* Acknowledge message (commit offset)
*/
ack(event: EventEnvelope): Promise<void>;
/**
* Negative acknowledge (seek back to retry)
*/
nack(event: EventEnvelope, requeue?: boolean): Promise<void>;
/**
* Flush producer
*/
flush(): Promise<void>;
/**
* Get adapter statistics
*/
getStats(): Promise<AdapterStats>;
/**
* Health check
*/
healthCheck(): Promise<HealthStatus>;
/**
* Handle incoming Kafka message
*/
private handleMessage;
/**
* Ensure topic exists
*/
private ensureTopic;
/**
* Create Kafka headers
*/
private createHeaders;
/**
* Serialize event for Kafka
*/
private serialize;
/**
* Deserialize Kafka message
*/
private deserialize;
/**
* Setup event handlers
*/
private setupEventHandlers;
/**
* Try to import KafkaJS package
*/
private importKafka;
/**
* Update statistics
*/
private updateStats;
/**
* Reset statistics
*/
private resetStats;
/**
* Generate unique ID
*/
private generateId;
}
export default KafkaEventAdapter;
//# sourceMappingURL=kafka.d.ts.map