Ich untersuche den Cosmos ChangeFeed -Prozessor für die Verarbeitung jedes Änderungsereignisses mit einem Java -Dienst. Ich versuche, mehrere Instanzen des Dienstes auszuführen, und erwarte, dass die Last auf sie verteilt wird. Im Moment werden jedoch alle Nachrichten nur durch eine Instanz konsumiert. < /P>
ChangeFeedProcessorOptions cfOptions = new ChangeFeedProcessorOptions();
cfOptions.setFeedPollDelay(Duration.ofSeconds(1));
cfOptions.setStartFromBeginning(false);
ChangeFeedProcessor changeFeedProcessorInstance = new ChangeFeedProcessorBuilder()
.options(cfOptions)
.hostName(hostName)//hostname is unique for each instance
.leaseContainer(leaseContainer)
.feedContainer(feedContainer)
.handleChanges(
documents -> documents.forEach(changeFeedProcessor::handleReceivedFeed))
.buildChangeFeedProcessor();
changeFeedProcessorInstance
.start()
.subscribeOn(Schedulers.fromExecutor(Executors.newFixedThreadPool(CDC_MAX_THREADS)))
.subscribe();
< /code>
Dies ist meine Azure Cosmos Maven -Abhängigkeit < /p>
com.microsoft.azure
azure-cosmos
3.7.3
< /code>
Ich habe 1 physische Partition und ungefähr 300.000 logische Partitionen in meinem überwachten Container. Ich habe dies berechnet, indem ich diese Abfrage < /p>
ausführteSELECT COUNT(1) FROM (SELECT distinct c.partitionKey FROM c) AS t
< /code>
Ich gehe davon aus, dass nur eine Instanz den Mietvertrag erfasst. Wie kann ich sicherstellen, dass jeder der Instanzen mindestens einen Mietvertrag erhält, damit die Last verteilt ist.
Vielen Dank im Voraus.
Verwendung mehrerer Instanzen für Cosmos ChangeFeed -Prozessor ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post