Kafka dzieli wiadomości przychodzące na partycje zgodnie z partycją przypisaną przez producenta. Wiadomości z partycji są następnie konsumowane przez konsumentów w różnych grupach konsumenckich.Czy Apache Kafka jest odpowiedni do użycia jako kolejka zadań?
Architektura ta sprawia, że obawiam się używania Kafki jako kolejki zadań/zadań, ponieważ muszę określić partycję w momencie produkcji, co pośrednio ogranicza liczbę klientów, którzy mogą na niej pracować, ponieważ partycja jest wysyłana tylko do jednego konsumenta. grupa konsumencka. Wolałbym nie określać partycji z wyprzedzeniem, aby mógł to zrobić dowolny klient dostępny do wykonania tego zadania. Czy istnieje sposób na uporządkowanie partycji/producentów w architekturze Kafki, w której zadania mogą zostać przyciągnięte przez następnego dostępnego konsumenta, bez konieczności dzielenia pracy z wyprzedzeniem, wybierając partycję podczas produkcji?
Używanie tylko jednej partycji do tego tematu spowoduje, że wszystkie zadania będą w tej samej kolejce, ale wtedy liczba konsumentów jest ograniczona do 1 na grupę konsumentów, więc każdy konsument musiałby być w innej grupie. Następnie wszystkie zadania są dystrybuowane do każdej grupy konsumenckiej, co nie jest rodzajem oczekującej pracy, której szukam.
Czy Apache Kafka jest odpowiedni do użycia jako kolejka zadań?
Warto również wspomnieć o tym, że popełnianie przesunięć szybko staje się skomplikowane, aby poradzić sobie z niewydolnymi zadaniami, które wymagają ponownej próby. – Ztyx
"w Kafce, aby w pełni osiągnąć, że musisz mieć tylko jednego konsumenta i jedną partycję" jest niepoprawne. Zamówienie jest gwarantowane dla każdej partycji w temacie opartym na kluczu partycji. Jeśli więc zamówienie ma znaczenie, musisz podzielić na partycje według wartości, która ma znaczenie. To jest rzeczywiście silniejsze gwarancje zamawiania niż rabbitmq, które może mieć tylko jeden konsument, aby zagwarantować zamawianie. –
, ale możesz mieć tylko jednego konsumenta. co nie jest wystarczająco dobre. –