Schlüssel ist erforderlich als Teil für das senden von Nachrichten an Kafka?
KeyedMessage<String, byte[]> keyedMessage = new KeyedMessage<String, byte[]>(request.getRequestTopicName(), SerializationUtils.serialize(message));
producer.send(keyedMessage);
Derzeit, ich bin das senden von Nachrichten, ohne den Schlüssel als Teil des keyed-Nachrichten, wird es immer noch funktionieren mit delete.retention.ms
? Brauche ich zum senden einer Taste als Teil der Nachricht? Ist diese gut zu machen, um den Schlüssel als Teil der Nachricht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tasten sind meist nützlich/notwendig, wenn Sie stark ist, um für einen Schlüssel und entwickeln so etwas wie eine state machine. Wenn Sie festlegen, dass Nachrichten mit dem gleichen Schlüssel (z.B. eine eindeutige id) stehen immer in der richtigen Reihenfolge, die Befestigung einer Taste auf Nachrichten wird gewährleistet, dass Nachrichten mit dem gleichen Schlüssel immer in der gleichen partition in ein Thema. Kafka garantiert, um innerhalb einer partition, nicht aber über die Partitionen hinweg in ein Thema, so alternativ, keinen Schlüssel - was in einer round-robin-Verteilung über Partitionen - wird nicht behaupten, eine solche Ordnung.
Im Falle einer state-Maschine, die Tasten können verwendet werden, mit melden.cleaner.aktivieren dedupliziert werden sollen-Einträge mit dem gleichen Schlüssel. In diesem Fall Kafka geht davon aus, dass Ihre Anwendung kümmert sich nur um das jüngste Beispiel einer bestimmten Schlüssel und die log-cleaner löscht ältere Duplikate eines bestimmten Schlüssel nur, wenn der Schlüssel nicht null ist. Diese form der log-Verdichtung wird gesteuert durch die melden.cleaner.löschen.retention Eigentum und verlangt die Schlüssel.
Alternativ, je mehr gemeinsame Eigenschaft melden.retention.Stunden, die standardmäßig aktiviert ist, funktioniert durch löschen der kompletten Segmente des Protokolls, die veraltet sind. In diesem Fall werden die Schlüssel nicht zur Verfügung gestellt werden. Kafka wird, löschen Sie einfach Teile der log, die älter sind als der angegebene Aufbewahrungszeitraum.
Das ist alles zu sagen, wenn du Sie aktiviert hast log-Verdichtung oder eine strikte Reihenfolge für die Nachrichten mit dem gleichen Schlüssel dann auf jeden Fall sollte man mit Schlüsseln. Ansonsten, null-Tasten kann bessere Verteilung und verhindern, dass potentielle hot-spotting-Themen in den Fällen, wo einige Tasten erscheinen mag, mehr als andere.
attaching a key to messages will ensure messages with the same key always go to the same partition in a topic
. Ich habe nicht diesen Teil und wie/warum ist das ein Vorteil oder use-case. Ist das nicht der log-Verdichtung sollte klar Nachrichten mit demselben Schlüssel im Laufe der Zeit ?ProducerRecord