Архитектуры, управляемые событиями, приобрели огромную популярность благодаря своей способности создавать масштабируемые и несвязанные системы. Apache Kafka, платформа распределенной потоковой передачи событий, является идеальным выбором для реализации таких архитектур. В этом руководстве мы покажем вам настройку архитектуры, управляемой событиями, с использованием KafkaJS, библиотеки Node.js для взаимодействия с Kafka.
Предварительные условия
Прежде чем мы начнем, убедитесь, что у вас установлены следующие необходимые компоненты:
- Node.js
- нпм или пряжа
- Доступен брокер(ы) Kafka
Шаг 1. Установка KafkaJS
Начните с установки KafkaJS с помощью предпочитаемого вами менеджера пакетов:
npm install kafkajs
Шаг 2: Создание событий
В архитектуре, управляемой событиями, производители отправляют события в темы. Вот как вы можете создать производитель KafkaJS:
const { Kafka } = require('kafkajs'); // Kafka configuration const kafka = new Kafka({ clientId: 'my-producer', brokers: ['localhost:9092'] // Replace with your Kafka broker addresses }); // Create producer const producer = kafka.producer(); // Connect to Kafka broker async function runProducer() { await producer.connect(); // Send a message to a topic await producer.send({ topic: 'my-topic', messages: [{ value: 'Hello, Kafka!' }] }); // Disconnect the producer await producer.disconnect(); } runProducer().catch(console.error);
Шаг 3: Использование событий
Потребители несут ответственность за подписку на темы и обработку сообщений. Вот пример потребителя KafkaJS:
const { Kafka } = require('kafkajs'); // Kafka configuration const kafka = new Kafka({ clientId: 'my-consumer', brokers: ['localhost:9092'] // Replace with your Kafka broker addresses }); // Create consumer const consumer = kafka.consumer({ groupId: 'my-group' }); // Connect to Kafka broker and subscribe to topics async function runConsumer() { await consumer.connect(); await consumer.subscribe({ topic: 'my-topic', fromBeginning: true }); // Start consuming messages await consumer.run({ eachMessage: async ({ topic, partition, message }) => { console.log(`Received message on ${topic}, partition ${partition}: ${message.value}`); } }); } runConsumer().catch(console.error);
Заключение
В этом руководстве вы узнали, как настроить архитектуру, управляемую событиями, с помощью KafkaJS и Node.js. Производители отправляют события в темы Kafka, а потребители подписываются на эти темы и обрабатывают входящие сообщения. Это обеспечивает масштабируемость и слабосвязанность систем, что делает KafkaJS мощным инструментом для создания приложений, управляемых событиями.
Оставайтесь с нами, я буду добавлять больше к архитектуре, управляемой событиями, и микросервисам.