Share via


ServiceBusSession Classe

A ServiceBusSession é utilizada para gerir estados de sessão e bloquear a renovação.

Utilize a propriedade session no ServiceBusReceiver para obter o objeto ServiceBusSession correspondente ligado ao recetor em vez de instanciar diretamente um objeto ServiceBusSession.

Herança
azure.servicebus._servicebus_session.BaseSession
ServiceBusSession

Construtor

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

Parâmetros

session_id
receiver

Exemplos

Obter sessão de um recetor


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

Métodos

get_state

Obter o estado da sessão.

Devolve Nenhum se não tiver sido definido nenhum estado.

renew_lock

Renove o bloqueio da sessão.

Esta operação tem de ser executada periodicamente para manter um bloqueio na sessão para continuar o processamento de mensagens.

Assim que o bloqueio for perdido, a ligação será fechada; não é possível renovar um bloqueio expirado.

Esta operação também pode ser executada como uma tarefa em segundo plano por thread ao registar a sessão numa instância azure.servicebus.aio.AutoLockRenewer .

set_state

Defina o estado da sessão.

get_state

Obter o estado da sessão.

Devolve Nenhum se não tiver sido definido nenhum estado.

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

Parâmetros

timeout
Optional[float]

O tempo limite total da operação em segundos, incluindo todas as repetições. Se for especificado, o valor tem de ser maior do que 0. O valor predefinido é Nenhum, o que significa que não há tempo limite.

Devoluções

O estado da sessão.

Tipo de retorno

Exemplos

Obter o estado da sessão


       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

Renove o bloqueio da sessão.

Esta operação tem de ser executada periodicamente para manter um bloqueio na sessão para continuar o processamento de mensagens.

Assim que o bloqueio for perdido, a ligação será fechada; não é possível renovar um bloqueio expirado.

Esta operação também pode ser executada como uma tarefa em segundo plano por thread ao registar a sessão numa instância azure.servicebus.aio.AutoLockRenewer .

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

Parâmetros

timeout
Optional[float]

O tempo limite total da operação em segundos, incluindo todas as repetições. Se for especificado, o valor tem de ser maior do que 0. O valor predefinido é Nenhum, o que significa que não há tempo limite.

Devoluções

O utc datetime em que o bloqueio está definido para expirar às.

Tipo de retorno

Exemplos

Renovar o bloqueio de sessão antes de expirar


       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

Defina o estado da sessão.

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

Parâmetros

state
str ou bytes ou bytearray ou None
Necessário

O valor de estado.

timeout
float ou None

O tempo limite total da operação em segundos, incluindo todas as repetições. Se for especificado, o valor tem de ser maior do que 0. O valor predefinido é Nenhum, o que significa que não há tempo limite.

Devoluções

Resposta da chamada de retorno

Tipo de retorno

any

Exemplos

Definir o estado da sessão


       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")

Atributos

locked_until_utc

O momento em que o bloqueio desta sessão irá expirar.

Tipo de retorno

session_id

ID da sessão atual.

Tipo de retorno

str