* Die durch Rebalances ausgelösten Zustand-Fehler bei regulären
"Staffelübergaben" lassen sich vollständig durch ein Downgrade des
`CooperativeStickyAssignor` auf den `StickyAssignor` lösen.
* *Achtung:* Der `StickyAssignor` verwendet das Eager-Protokoll.
* D.h., ein Down-Grade auf den `StickyAssignor` benötigt einen Reset
der Gruppe, ist also nicht per Rolling Upgrade im laufenden Betrieb
möglich.
* Vorführ-Skript so angepasst, dass man sofort sieht, dass diese
Version alle regulären Rebalance-Fälle ohne Fehler durchführen kann.
echo "Resultate für klaus von adder-2"
http :8092/results/klaus | jq .[].sum | uniq
echo "Resultate für klaus von adder-2"
http :8092/results/klaus | jq .[].sum | uniq
+docker-compose stop adder-1
+until [ $(http --check-status :8092/results/peter 2> /dev/null) ]; do echo "Waiting for some results for peter to show up on adder-2..."; sleep 1; done
+until [ $(http --check-status :8092/results/klaus 2> /dev/null) ]; do echo "Waiting for some results for peter to show up on adder-2..."; sleep 1; done
+
+echo "Resultate für adder-2"
+http -v --pretty none -S :8092/results
+echo
+
+echo "Resultate für peter von adder-2"
+http :8092/results/peter | jq .[].sum | uniq
+echo "Resultate für klaus von adder-2"
+http :8092/results/klaus | jq .[].sum | uniq
+
docker-compose kill -s 9 peter klaus
docker-compose kill -s 9 peter klaus
Properties props = new Properties();
props.put("bootstrap.servers", properties.getBootstrapServer());
Properties props = new Properties();
props.put("bootstrap.servers", properties.getBootstrapServer());
- props.put("partition.assignment.strategy", "org.apache.kafka.clients.consumer.CooperativeStickyAssignor");
+ props.put("partition.assignment.strategy", "org.apache.kafka.clients.consumer.StickyAssignor");
props.put("group.id", properties.getGroupId());
props.put("client.id", properties.getClientId());
props.put("auto.offset.reset", properties.getAutoOffsetReset());
props.put("group.id", properties.getGroupId());
props.put("client.id", properties.getClientId());
props.put("auto.offset.reset", properties.getAutoOffsetReset());