mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 08:33:36 +00:00
36 lines
792 B
TypeScript
36 lines
792 B
TypeScript
import { Kafka, Producer } from 'kafkajs';
|
|
import type { EventBase } from './events';
|
|
|
|
let producer: Producer | null = null;
|
|
|
|
const kafka = new Kafka({
|
|
clientId: 'phantom-web',
|
|
brokers: [`${process.env.KAFKA_HOST || 'localhost'}:${process.env.KAFKA_PORT || '9092'}`],
|
|
});
|
|
|
|
export const getProducer = async (): Promise<Producer> => {
|
|
if (!producer) {
|
|
producer = kafka.producer();
|
|
await producer.connect();
|
|
}
|
|
return producer;
|
|
};
|
|
|
|
export const sendEvent = async (ev: EventBase) => {
|
|
const p = await getProducer();
|
|
await p.send({
|
|
topic: 'user-interactions',
|
|
messages: [{
|
|
key: ev.sessionId,
|
|
value: JSON.stringify(ev),
|
|
}],
|
|
});
|
|
};
|
|
|
|
export const disconnect = async () => {
|
|
if (producer) {
|
|
await producer.disconnect();
|
|
producer = null;
|
|
}
|
|
};
|