Ich habe mehrere Verbraucher alle mit der gleichen group.id für ein bestimmtes Thema zuhören. Das Thema hat eine Partition.Erwartetes Verhalten für mehrere Consumer mit derselben group.id für ein Thema mit einer einzelnen Partition
Es ist mein Verständnis, dass Verbraucher aus der gleichen Verbrauchergruppe (identifiziert durch identische group.id) Nachrichten in einer Round-Robin-Art erhalten würden, so dass eine Nachricht nur von einem einzelnen Verbraucher behandelt wird. Die Benutzer werden auf verschiedenen Computern in verschiedenen Windows-Diensten ausgeführt.
Der Verbraucher wird in C# geschrieben und basiert auf Confluent's Apache Kafka .NET client.
Die Konfiguration sieht so aus:
var config = new Dictionary<string, object>
{
{"group.id", "MyConsumerGroupId"},
{"enable.auto.commit", true},
{"auto.commit.interval.ms", 5000},
{"log.connection.close", false},
{"session.timeout.ms", 30000},
{"heartbeat.interval.ms", 5000},
{"queued.min.messages", 1000},
{"partition.assignment.strategy", "roundrobin"},
{"bootstrap.servers", _kafkaCluster},
{
"default.topic.config", new Dictionary<string, object>
{
{"auto.offset.reset", "largest"}
}
}
};
Jedoch habe ich Erfahrung machen, dass alle Verbraucher die gleichen Nachrichten bekommt. Vom Verbraucher protokolliere ich Informationen über die empfangene Nachricht und hier sehe ich mehrere Protokolleinträge mit derselben Nachricht, Thema, Offset und Partition.
Ist dies das erwartete Verhalten?
Eigentlich ist es komisch, dass Sie die gleiche Nachricht erhalten, da alle Konsumenten derselben Groupid angehören. Wenn Sie jedoch sagen: "Die Verbraucher werden auf verschiedenen Computern in verschiedenen Windows-Diensten ausgeführt." Was genau bedeutet das? – dbustosp