Sobes.tech
Middle
27

Бізде 4 бөлімшесі бар Topic бар. Өндіруші бір пайдаланушының хабарламаларын тек бір бөлімшеге жазу үшін қалай жасауға болады?

Сұралған компаниялар
СБЕРСБЕР

AI-дан жауап

sobes.tech AI

Чтобы продюсер 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 попадут в одну и ту же партицию.