Compartilhar via


ServiceBusSession Classe

O ServiceBusSession é usado para gerenciar estados de sessão e renovação de bloqueio.

Use a propriedade session no ServiceBusReceiver para obter o objeto ServiceBusSession correspondente vinculado ao receptor em vez de instanciar um objeto ServiceBusSession diretamente.

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 receptor


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

Variáveis

auto_renew_error
<xref:azure.servicebus.AutoLockRenewTimeout> ou <xref:azure.servicebus.AutoLockRenewFailed>

Erro quando AutoLockRenewer é usado e falha ao renovar o bloqueio de sessão.

Métodos

get_state

Obtenha o estado da sessão.

Retorna Nenhum se nenhum estado tiver sido definido.

renew_lock

Renove o bloqueio da sessão.

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

Depois que o bloqueio for perdido, a conexão será fechada; um bloqueio expirado não pode ser renovado.

Essa operação também pode ser executada como uma tarefa em segundo plano encadeada registrando a sessão com uma instância azure.servicebus.AutoLockRenewer .

set_state

Defina o estado da sessão.

get_state

Obtenha o estado da sessão.

Retorna Nenhum se nenhum estado tiver sido definido.

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

Parâmetros

timeout
float

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Retornos

O estado da sessão.

Tipo de retorno

Exemplos

Obter o estado da sessão


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

renew_lock

Renove o bloqueio da sessão.

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

Depois que o bloqueio for perdido, a conexão será fechada; um bloqueio expirado não pode ser renovado.

Essa operação também pode ser executada como uma tarefa em segundo plano encadeada registrando a sessão com uma instância azure.servicebus.AutoLockRenewer .

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

Parâmetros

timeout
float

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Retornos

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

Tipo de retorno

Exemplos

Renovar o bloqueio de sessão antes de expirar


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

set_state

Defina o estado da sessão.

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

Parâmetros

state
Union[str, bytes, bytearray, None]
Obrigatório

O valor do estado. Definir o estado como Nenhum limpará a sessão atual.

timeout
float

O tempo limite total da operação em segundos, incluindo todas as tentativas. O valor deve ser maior que 0 se especificado. O valor padrão é None, o que significa que não há tempo limite.

Retornos

Nenhum

Tipo de retorno

Exemplos

Definir o estado da sessão


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

Atributos

locked_until_utc

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

Tipo de retorno

session_id

ID da sessão atual.

Tipo de retorno

str