Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Ändringsströmmar är en realtidsström med databasändringar som flödar från databasen till ditt program. Med den här funktionen kan du skapa reaktiva program genom att prenumerera på databasändringar, vilket eliminerar behovet av kontinuerlig avsökning för att identifiera ändringar.
Anmärkning
Azure DocumentDB stöder för närvarande Change Stream i kluster med en enda shard. Vi arbetar aktivt med att ge Change Stream-stöd för kluster med flera shardar inom en snar framtid.
Azure DocumentDB tillämpar en systemhanterad logggräns på 400 MB för ändringsströmmar. Kunder bör bearbeta Ändringsströmmar kontinuerligt för att undvika att historiska ändringshändelser saknas. Förändringsströmmar använder systemhanterade loggar med en storleksgräns på 400 MB. Om en återstartstoken refererar till en ändringshändelse som har rullat bort från loggen kan ändringsströmmen inte återupptas från den punkten och behöver startas om. Vi planerar en förhandsversion för utökat stöd inom en snar framtid.
Aktivera ändringsströmmar
Du kan aktivera eller inaktivera den här funktionen med hjälp av Azure CLI eller en ARM-mall. Portalstöd kommer snart att läggas till.
Steg för att aktivera ändringsströmmar i klustret via CLI
- Logga in på Azure CLI
az login
- Hämta de aktuella inställningarna för funktionsflaggor i klustret. Detta säkerställer att du behåller alla befintliga flaggor när du lägger till den nya funktionen.
az resource show --ids "/subscriptions/<sub id>/resourceGroups/<resource group name>/providers/Microsoft.DocumentDB/mongoClusters/<resource name of your Azure DocumentDB cluster>" --api-version 2024-10-01-preview
- Skicka PATCH-begäran för att aktivera funktionen.
az resource patch --ids "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [ \"ChangeStreams\"]}"
- Kontrollera resultatet:
- Se till att svarsnyttolasten innehåller
"previewFeatures": ["ChangeStreams"]. - Om du får felet "ändringsströmmar stöds inte i det här klustret" skapar du en supportbegäran.
- Se till att svarsnyttolasten innehåller
Konfigurera ändringsströmmar
Den här exempelkoden initierar en ändringsström i exampleCollection samlingen och övervakar kontinuerligt eventuella ändringar. När en ändring identifieras hämtar den ändringshändelsen och skriver ut den i JSON-format.
// Open a change stream
const changeStream = db.exampleCollection.watch();
// Listen for changes
while (changeStream.hasNext())
{
const change = changeStream.next();
printjson(change);
}
Viktigt!
Ändringsströmmar kan återupptas genom att ange en återuppta-token till resumeAfter när markören öppnas. Det förväntas dock att det finns tillräckligt med historik för att hitta operationen som är associerad med token. Dokumentet som observerats i ändringsströmmen i _id fältet representerar den återanvändbara token.
cursor = db.exampleCollection.watch(resume_after=resume_token)
Övervaka databasändringar med Change Stream
Nu ska vi förstå utdata från ändringsströmmen via exemplet.
I denna förändringsströmhändelse ser vi att en ny post inserted tillades i exampleCollection-samlingen i cs-databasen, och händelseinformationen innehåller det fullständiga innehållet i det nyligen tillagda dokumentet.
{
"_id": { "_data": "AeARBpQ/AAAA" }, // "resume_token"
"operationType": "insert",
"fullDocument": {
"_id": { "$oid": "66e6f63e6f49ecaabf794958" },
"employee_id": "17986",
"name": "John",
"position": "Software Engineer",
"department": "IT",
"rating": 4
},
"ns": { "db": "cs", "coll": "exampleCollection" },
"documentKey": { "_id": { "$oid": "66e6f63e6f49ecaabf794958" } }
}
Anpassa data i Change Stream
Anpassa dina utdata för ändringsströmmen genom att ange en matris med en eller flera pipelinesteg under konfigurationen. Operatorer som stöds är följande.
$addFields$match$project$set$unset
Begränsningar
- Ändringsströmhändelser i kluster med flera fragment stöds ännu inte.
- Markörer för ändringsström måste återställas efter en felövergångshändelse i nuvarande tillstånd.
-
Updatehändelsen har ännu inte stöd för uppdateringsbeskrivning. -
pre-imageär ett alternativ som inte stöds. -
$changestreamsom en kapslad pipeline i en annan fas stöds ännu inte.