Senior
Jak sprawić, aby wszystkie zdarzenia dotyczące jednego zamówienia trafiały do jednej partycji Kafka?
sobes.tech AI
Odpowiedź od AI
Aby wszystkie zdarzenia związane z jednym zamówieniem trafiały do jednej partycji Kafka, należy użyć klucza (key) podczas wysyłania wiadomości, który jednoznacznie identyfikuje zamówienie.
Kafka używa klucza do obliczenia partycji za pomocą funkcji hash. Jeśli dla wszystkich zdarzeń tego samego zamówienia użyje się tego samego klucza (np. order_id), to trafią one do tej samej partycji.
Przykład w Go z użyciem sarama (popularny klient Kafka):
producer.Input() <- &sarama.ProducerMessage{
Topic: "orders",
Key: sarama.StringEncoder(orderID), // orderID — identyfikator zamówienia
Value: sarama.StringEncoder(eventData),
}
W ten sposób gwarantuje się, że wszystkie zdarzenia z tym samym kluczem będą w jednej partycji, co jest ważne dla uporządkowanego przetwarzania i spójności.