Sobes.tech
Middle
42

Bir istifadəçinin mesajlarının yalnız bir partisiya ilə yazılmasını necə təmin etmək olar, 4 partisiya olan Topic-də?

Şirkətlər soruşuldu
СБЕРСБЕР

AI-dan cavab

sobes.tech Süni İntellekt

Чтобы продюсер Kafka писал сообщения одного пользователя только в одну партицию, нужно использовать ключ (key) при отправке сообщений. Kafka использует ключ для определения партиции через хеш-функцию, поэтому одинаковый ключ всегда попадёт в одну и ту же партицию.

Пример на Python с использованием библиотеки kafka-python:

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092',
                         value_serializer=lambda v: json.dumps(v).encode('utf-8'))

user_id = 'user123'
message = {'event': 'login', 'user': user_id}

# Отправляем сообщение с ключом user_id, чтобы все сообщения этого пользователя шли в одну партицию
producer.send('topic_name', key=user_id.encode('utf-8'), value=message)
producer.flush()

Таким образом, все сообщения с одинаковым ключом user_id попадут в одну и ту же партицию.