Ordningsföljd och tidsstämplar för meddelanden

Sekvensering och tidsstämplar är två funktioner som alltid är aktiverade på alla Service Bus entiteter och visar egenskaperna och för mottagna Sequence​NumberEnqueuedTimeUtc eller bläddrade meddelanden.

I de fall då absolut ordningsföljd för meddelanden är betydande och/eller där en konsument behöver en tillförlitlig unik identifierare för meddelanden, stämplar koordinatorn meddelanden med ett mellanrumsfritt, ökande sekvensnummer i förhållande till kön eller ämnet. För partitionerade entiteter utfärdas sekvensnumret i förhållande till partitionen.

SequenceNumber-värdet är ett unikt 64-bitars heltal som tilldelats till ett meddelande eftersom det accepteras och lagras av den a broker och fungerar som dess interna identifierare. För partitionerade entiteter återspeglar de översta 16 bitarna partitionsidentifieraren. Sekvensnumren återställs till noll när 48/64-bitarsintervallet är slut.

Sekvensnumret kan vara betrott som en unik identifierare eftersom det tilldelas av en central och neutral auktoritet och inte av klienter. Den representerar också den sanna ankomstordningen och är mer exakt än en tidsstämpel som ett orderkriterium, eftersom tidsstämplarna kanske inte har en tillräckligt hög upplösning vid extrema meddelandefrekvenser och kan vara föremål för (dock minimal) klockskevning i situationer där ägarskapet för a broker övergår mellan noder.

Den absoluta ankomstordningen är viktig, till exempel i affärsscenarier där ett begränsat antal erbjudna varor betjänas enligt principen först tillhands medan leveranserna är slut. försäljning av biljetter är ett exempel.

Tidsstämplar-funktionen fungerar som en neutral och tillförlitlig auktoritet som korrekt avbildar UTC-tiden för ett meddelandes ankomst, vilket återspeglas i egenskapen EnqueuedTimeUtc. Värdet är användbart om ett affärsscenario är beroende av tidsgränser, till exempel om ett arbetsobjekt skickades ett visst datum före midnatt, men bearbetningen ligger långt efter köloggen.

Schemalagda meddelanden

Du kan skicka meddelanden till en kö eller ett ämne för fördröjd bearbetning, till exempel för att schemalägga ett jobb som ska bli tillgänglig för bearbetning av ett system vid en viss tidpunkt. Den här funktionen realiserar en tillförlitlig distribuerad tidsbaserad schemaläggare.

Schemalagda meddelanden materialiseras inte i kön förrän den definierade kötiden. Innan dess kan schemalagda meddelanden avbrytas. Annulleringen tar bort meddelandet.

Du kan schemalägga meddelanden med någon av våra klienter på två sätt:

  • Använd det vanliga API:et för att skicka, Scheduled​Enqueue​Time​Utc men ange egenskapen för meddelandet innan det skickas.
  • Använd API:et för schemameddelandet och skicka både det normala meddelandet och den schemalagda tiden. Detta returnerar det schemalagda meddelandet SequenceNumber, som du senare kan använda för att avbryta det schemalagda meddelandet om det behövs.

Schemalagda meddelanden och deras sekvensnummer kan också identifieras med hjälp av bläddring av meddelanden.

SequenceNumber för ett schemalagt meddelande är endast giltigt när meddelandet är i det här tillståndet. När meddelandet övergår till det aktiva tillståndet läggs meddelandet till i kön som om det hade varit i kö i det aktuella läget, vilket innefattar att tilldela ett nytt SequenceNumber.

Eftersom funktionen är fäst vid enskilda meddelanden och meddelanden bara kan tas i Service Bus stöder inte återkommande scheman för meddelanden.

Nästa steg

Mer information om Service Bus finns i följande avsnitt: