Ответ
Топик (Topic) — это именованный канал или категория в системах обмена сообщениями (брокерах), таких как Apache Kafka, RabbitMQ или Apache Pulsar. Производители (Producers) публикуют сообщения в топик, а потребители (Consumers) подписываются на топик для их получения. Это реализует шаблон "публикация-подписка" (Pub/Sub).
Ключевые характеристики:
- Логическое разделение: Каждый топик предназначен для определенного типа событий или данных (например,
user-registrations,order-payments). - Масштабируемость: В Kafka топик делится на партиции для параллельной обработки.
- Надежность: Сообщения в топике обычно сохраняются на диске и реплицируются.
Пример создания топика и отправки сообщения в Apache Kafka (Java):
// 1. Настройка админа для управления топиками
Properties adminProps = new Properties();
adminProps.put("bootstrap.servers", "localhost:9092");
AdminClient admin = AdminClient.create(adminProps);
// Создание топика с 3 партициями и фактором репликации 1
NewTopic newTopic = new NewTopic("order-events", 3, (short) 1);
admin.createTopics(Collections.singleton(newTopic));
// 2. Отправка сообщения продюсером
Properties producerProps = new Properties();
producerProps.put("bootstrap.servers", "localhost:9092");
producerProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producerProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(producerProps);
ProducerRecord<String, String> record = new ProducerRecord<>(
"order-events", // Имя топика
"order-123", // Ключ (определяет партицию)
"{"status": "paid"}" // Значение (тело сообщения)
);
producer.send(record);
producer.close();