Dela via


ServiceBusSession Klass

ServiceBusSession används för att hantera sessionstillstånd och låsa förnyelse.

Använd egenskapen session på ServiceBusReceiver för att hämta motsvarande ServiceBusSession-objekt som är länkat till mottagaren i stället för att instansiera ett ServiceBusSession-objekt direkt.

Arv
azure.servicebus._servicebus_session.BaseSession
ServiceBusSession

Konstruktor

ServiceBusSession(session_id: str, receiver: ServiceBusReceiver | ServiceBusReceiverAsync)

Parametrar

session_id
receiver

Exempel

Hämta session från en mottagare


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session

Metoder

get_state

Hämta sessionstillståndet.

Returnerar Ingen om inget tillstånd har angetts.

renew_lock

Förnya sessionslåset.

Den här åtgärden måste utföras regelbundet för att behålla ett lås på sessionen för att fortsätta bearbetningen av meddelanden.

När låset har förlorats stängs anslutningen. Det går inte att förnya ett utgånget lås.

Den här åtgärden kan också utföras som en trådad bakgrundsaktivitet genom att registrera sessionen med en azure.servicebus.aio.AutoLockRenewer-instans .

set_state

Ange sessionstillstånd.

get_state

Hämta sessionstillståndet.

Returnerar Ingen om inget tillstånd har angetts.

async get_state(*, timeout: float | None = None, **kwargs: Any) -> bytes

Parametrar

timeout
Optional[float]

Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.

Returer

Sessionstillståndet.

Returtyp

Exempel

Hämta sessionstillståndet


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           session_state = await session.get_state()

renew_lock

Förnya sessionslåset.

Den här åtgärden måste utföras regelbundet för att behålla ett lås på sessionen för att fortsätta bearbetningen av meddelanden.

När låset har förlorats stängs anslutningen. Det går inte att förnya ett utgånget lås.

Den här åtgärden kan också utföras som en trådad bakgrundsaktivitet genom att registrera sessionen med en azure.servicebus.aio.AutoLockRenewer-instans .

async renew_lock(*, timeout: float | None = None, **kwargs: Any) -> datetime

Parametrar

timeout
Optional[float]

Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.

Returer

Utc datetime som låset är inställt på att upphöra att gälla vid.

Returtyp

Exempel

Förnya sessionslåset innan det upphör att gälla


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           await session.renew_lock()

set_state

Ange sessionstillstånd.

async set_state(state: str | bytes | bytearray | None, *, timeout: float | None = None, **kwargs: Any) -> None

Parametrar

state
str eller bytes eller bytearray eller None
Obligatorisk

Tillståndsvärdet.

timeout
float eller None

Den totala tidsgränsen för åtgärden i sekunder, inklusive alla återförsök. Värdet måste vara större än 0 om det anges. Standardvärdet är Ingen, vilket innebär att tidsgränsen inte nås.

Returer

Svar på motringning

Returtyp

any

Exempel

Ange sessionstillstånd


       async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session
           await session.set_state("START")

Attribut

locked_until_utc

Tiden då den här sessionens lås upphör att gälla.

Returtyp

session_id

Sessions-ID för den aktuella sessionen.

Returtyp

str