Этот пример демонстрирует расширение базового производителя сообщений в Apache Kafka, написанного на Node.js, для генерации и отправки случайных названий животных.
Создание производителя и генерация случайных данных
Начальный пример отправляет сообщение «hello kafka.js user» в тему «test». Мы расширим его функциональность, создадим тему «animals» и будем генерировать случайные имена животных с помощью пакета chance.
const topic = 'animals';
Для отправки сообщений с интервалом в одну секунду используется setInterval:
setInterval(produceMessage, 1000);
Асинхронная функция produceMessage обрабатывает возможные ошибки:
const produceMessage = async () => {
try {
await producer.send({
topic,
messages: [{ value }]
});
console.log(value); // Вывод сгенерированного имени животного в консоль
} catch (error) {
console.error(error);
}
};
Использование пакета chance
Для генерации случайных имен животных установите пакет chance с помощью npm:
npm install chance
Импортируйте и инициализируйте пакет в коде:
const Chance = require('chance');
const chance = new Chance();
Генерируйте случайное имя животного с помощью метода animal():
let value = chance.animal();
Полный код функции produceMessage:
const produceMessage = async () => {
try {
const value = chance.animal();
await producer.send({
topic,
messages: [{ value }]
});
console.log(value);
} catch (error) {
console.error(error);
}
};
Управление темой «animals»
Создайте тему «animals» в Kafka (команда зависит от вашей конфигурации):
# Команда для создания темы animals (например, kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic animals)
Проверьте создание темы (команда зависит от вашей конфигурации):
# Команда для отображения списка тем (например, kafka-topics --list --bootstrap-server localhost:9092)
Запуск и проверка
Запустите консольный потребитель, указав тему «animals»:
# Команда для запуска консольного потребителя с темой animals (пример)
Затем запустите производителя:
node producer.js
Производитель будет отправлять случайные имена животных в тему «animals» каждую секунду. Проверьте получение сообщений потребителем.
Пример демонстрирует модификацию производителя сообщений для генерации и отправки случайных данных в Apache Kafka с использованием Node.js и пакета chance.