mirror of
https://github.com/kremalicious/umami.git
synced 2024-11-16 02:05:04 +01:00
77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
|
// import the `Kafka` instance from the kafkajs library
|
||
|
const { Kafka } = require('kafkajs');
|
||
|
|
||
|
// the client ID lets kafka know who's producing the messages
|
||
|
const clientId = 'my-app';
|
||
|
// we can define the list of brokers in the cluster
|
||
|
const brokers = ['localhost:9092', 'localhost:9093', 'localhost:9094'];
|
||
|
// this is the topic to which we want to write messages
|
||
|
const topic = 'event';
|
||
|
|
||
|
// initialize a new kafka client and initialize a producer from it
|
||
|
const kafka = new Kafka({ clientId, brokers });
|
||
|
const { Partitioners } = require('kafkajs');
|
||
|
|
||
|
const producer = kafka.producer({ createPartitioner: Partitioners.DefaultPartitioner });
|
||
|
|
||
|
// we define an async function that writes a new message each second
|
||
|
async function produce_event() {
|
||
|
await producer.connect();
|
||
|
let i = 0;
|
||
|
|
||
|
// after the produce has connected, we start an interval timer
|
||
|
setInterval(async () => {
|
||
|
try {
|
||
|
// send a message to the configured topic with
|
||
|
// the key and value formed from the current value of `i`
|
||
|
let y = Math.random()
|
||
|
.toString(36)
|
||
|
.replace(/[^a-z]+/g, '')
|
||
|
.substr(0, 5);
|
||
|
let z = Math.random()
|
||
|
.toString(36)
|
||
|
.replace(/[^a-z]+/g, '')
|
||
|
.substr(0, 5);
|
||
|
let x = {
|
||
|
event_uuid: '00fea66e-a433-536d-a13d-2d873fab0a08',
|
||
|
website_id: i,
|
||
|
session_uuid: '00fea66e-a433-536d-a13d-2d873fab0a08',
|
||
|
created_at: '2020-07-18 11:53:33',
|
||
|
url: y,
|
||
|
event_data: z,
|
||
|
};
|
||
|
|
||
|
await producer.send({
|
||
|
topic,
|
||
|
messages: [
|
||
|
{
|
||
|
key: 'my-key',
|
||
|
value: JSON.stringify(x),
|
||
|
},
|
||
|
{
|
||
|
key: 'my-key',
|
||
|
value: JSON.stringify(x),
|
||
|
},
|
||
|
{
|
||
|
key: 'my-key',
|
||
|
value: JSON.stringify(x),
|
||
|
},
|
||
|
{
|
||
|
key: 'my-key',
|
||
|
value: JSON.stringify(x),
|
||
|
},
|
||
|
{
|
||
|
key: 'my-key',
|
||
|
value: JSON.stringify(x),
|
||
|
},
|
||
|
],
|
||
|
});
|
||
|
i++;
|
||
|
} catch (err) {
|
||
|
console.error('could not write message ' + err);
|
||
|
}
|
||
|
}, 4);
|
||
|
}
|
||
|
|
||
|
module.exports = produce_event;
|