EventHubProducerClient Classe
A classe EventHubProducerClient define uma interface de alto nível para enviar eventos para o serviço Hubs de Eventos do Azure.
- Herança
-
azure.eventhub._client_base.ClientBaseEventHubProducerClient
Construtor
EventHubProducerClient(fully_qualified_namespace: str, eventhub_name: str, credential: CredentialTypes, *, buffered_mode: Literal[False] = False, **kwargs: Any)
Parâmetros
- fully_qualified_namespace
- str
O nome do host totalmente qualificado para o namespace dos Hubs de Eventos. É provável que isso seja semelhante a .servicebus.windows.net
- credential
- TokenCredential ou AzureSasCredential ou AzureNamedKeyCredential
O objeto de credencial usado para autenticação que implementa uma interface específica para obter tokens. Ele aceita EventHubSharedKeyCredential, ou objetos de credencial gerados pela biblioteca de identidade do azure e objetos que implementam o método *get_token(self, scopes).
- buffered_mode
- bool
Se True, o cliente produtor coletará eventos em um buffer, com eficiência, em lote e, em seguida, publicará. O padrão é Falso.
O ThreadPoolExecutor a ser usado para publicar eventos ou o número de trabalhos para o ThreadPoolExecutor. O padrão é None e um ThreadPoolExecutor com o número padrão de trabalhos será criado por https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
O retorno de chamada a ser chamado depois que um lote for publicado com êxito. O retorno de chamada usa dois parâmetros:
eventos: a lista de eventos que foram publicados com êxito
partition_id: a ID de partição na qual os eventos na lista foram publicados.
A função de retorno de chamada deve ser definida como: on_success(events, partition_id). Ele é necessário quando buffered_mode é True enquanto opcional se buffered_mode for False.
O retorno de chamada a ser chamado depois que um lote não tiver sido publicado. A função de retorno de chamada deve ser definida como: on_error(events, partition_id, error), em que:
eventos: a lista de eventos que não foram publicados,
partition_id: a ID de partição na qual os eventos na lista foram tentados a ser publicados no e
erro: a exceção relacionada à falha de envio.
Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira:
Se um retorno de chamada on_error for passado durante a instanciação do cliente produtor,
em seguida, as informações de erro serão passadas para o retorno de chamada on_error , que será chamado em seguida.
Se um retorno de chamada on_error não for passado durante a instanciação do cliente,
em seguida, o erro será gerado por padrão.
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira:
Se os eventos não conseguirem enfileirar dentro do tempo limite especificado, um erro será gerado diretamente.
Se os eventos não forem enviados após a enfileiramento com êxito, o retorno de chamada on_error será chamado.
- max_buffer_length
- int
Somente modo em buffer. O número total de eventos por partição que podem ser armazenados em buffer antes que uma liberação seja disparada. O valor padrão é 1500 no modo em buffer.
Somente modo em buffer. A quantidade de tempo para aguardar a criação de um lote com eventos no buffer antes da publicação. O valor padrão é 1 no modo em buffer.
- logging_enable
- bool
Se deseja gerar logs de rastreamento de rede para o agente. O padrão é False.
- auth_timeout
- float
O tempo em segundos para aguardar que um token seja autorizado pelo serviço. O valor padrão é 60 segundos. Se definido como 0, nenhum tempo limite será imposto do cliente.
- user_agent
- str
Se especificado, isso será adicionado na frente da cadeia de caracteres do agente do usuário.
- retry_total
- int
O número total de tentativas de refazer uma operação com falha quando ocorre um erro. O valor padrão é 3.
- retry_backoff_factor
- float
Um fator de retirada a ser aplicado entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem atraso). No modo fixo, a política de repetição sempre funcionará para {fator de retirada}. No modo 'exponencial', a política de repetição funcionará para: {fator de retirada} * (2 ** ({número de repetições totais} - 1)) segundos. Se o backoff_factor for 0,1, a repetição dormirá para [0.0s, 0.2s, 0.4s, ...] entre repetições. O valor padrão é 0,8.
- retry_backoff_max
- float
O tempo máximo de retirada. O valor padrão é 120 segundos (2 minutos).
- retry_mode
- str
O comportamento de atraso entre tentativas de repetição. Os valores com suporte são 'fixos' ou 'exponencial', em que o padrão é 'exponencial'.
- idle_timeout
- float
Tempo limite, em segundos, após o qual esse cliente fechará a conexão subjacente se não houver atividade. Por padrão, o valor é None, o que significa que o cliente não será desligado devido à inatividade, a menos que seja iniciado pelo serviço.
- transport_type
- TransportType
O tipo de protocolo de transporte que será usado para se comunicar com o serviço de Hubs de Eventos. O padrão é TransportType.Amqp , nesse caso, a porta 5671 é usada. Se a porta 5671 não estiver disponível/bloqueada no ambiente de rede, TransportType.AmqpOverWebsocket poderá ser usado, em vez disso, que usa a porta 443 para comunicação.
- http_proxy
- Dict
Configurações de proxy HTTP. Deve ser um dicionário com as seguintes chaves: 'proxy_hostname' (valor str) e 'proxy_port' (valor int). Além disso, as seguintes chaves também podem estar presentes: 'nome de usuário', 'senha'.
O endereço de ponto de extremidade personalizado a ser usado para estabelecer uma conexão com o serviço de Hubs de Eventos, permitindo que as solicitações de rede sejam roteadas por meio de gateways de aplicativo ou outros caminhos necessários para o ambiente de host. O padrão é None. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, por padrão, a porta 443 será usada.
Caminho para o arquivo de CA_BUNDLE personalizado do certificado SSL que é usado para autenticar a identidade do ponto de extremidade de conexão. O padrão é Nenhum, nesse caso , certifi.where() será usado.
- uamqp_transport
- bool
Se deve usar a biblioteca uamqp como o transporte subjacente. O valor padrão é False e a biblioteca AMQP do Python Puro será usada como o transporte subjacente.
- socket_timeout
- float
O tempo em segundos em que o soquete subjacente na conexão deve aguardar ao enviar e receber dados antes de atingir o tempo limite. O valor padrão é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se os erros eventHubsConnectionError estiverem ocorrendo devido ao tempo limite de gravação, um valor maior que o padrão poderá precisar ser passado. Isso é para cenários de uso avançado e, normalmente, o valor padrão deve ser suficiente.
Exemplos
Crie uma nova instância do EventHubProducerClient.
import os
from azure.eventhub import EventHubProducerClient, EventHubSharedKeyCredential
fully_qualified_namespace = os.environ['EVENT_HUB_HOSTNAME']
eventhub_name = os.environ['EVENT_HUB_NAME']
shared_access_policy = os.environ['EVENT_HUB_SAS_POLICY']
shared_access_key = os.environ['EVENT_HUB_SAS_KEY']
credential = EventHubSharedKeyCredential(shared_access_policy, shared_access_key)
producer = EventHubProducerClient(
fully_qualified_namespace=fully_qualified_namespace,
eventhub_name=eventhub_name, # EventHub name should be specified if it doesn't show up in connection string.
credential=credential
)
Métodos
close |
Feche a conexão e os links amqp subjacentes do cliente produtor. |
create_batch |
Crie um objeto EventDataBatch com o tamanho máximo de todo o conteúdo restringido por max_size_in_bytes. O max_size_in_bytes não deve ser maior do que o tamanho máximo permitido da mensagem definido pelo serviço. |
flush |
Somente modo em buffer. Libere eventos no buffer a serem enviados imediatamente se o cliente estiver trabalhando no modo em buffer. |
from_connection_string |
Crie um EventHubProducerClient de um cadeia de conexão. |
get_buffered_event_count |
O número de eventos armazenados em buffer e aguardando para serem publicados para uma determinada partição. Retorna Nenhum no modo não armazenado em buffer. OBSERVAÇÃO: o buffer de eventos é processado em um thread em segundo plano, portanto, o número de eventos no buffer relatado por essa API deve ser considerado apenas uma aproximação e só é recomendado para uso na depuração. Para uma ID de partição que não tem eventos armazenados em buffer, 0 será retornado independentemente de essa ID de partição realmente existir no Hub de Eventos. |
get_eventhub_properties |
Obter propriedades do Hub de Eventos. As chaves no dicionário retornado incluem:
|
get_partition_ids |
Obter IDs de partição do Hub de Eventos. |
get_partition_properties |
Obter propriedades da partição especificada. As chaves no dicionário de propriedades incluem:
|
send_batch |
Envia um lote de dados de evento. Por padrão, o método será bloqueado até que a confirmação seja recebida ou a operação atingir o tempo limite. Se o EventHubProducerClient estiver configurado para ser executado no modo em buffer, o método tentará enfileirar os eventos no buffer dentro do tempo determinado, se especificado e retornado. O produtor fará o envio automático em segundo plano no modo em buffer. Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira:
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira:
No modo em buffer, o envio de um lote permanecerá intacto e enviado como uma única unidade. O lote não será reorganizado. Isso pode resultar em ineficiência do envio de eventos. Se você estiver enviando uma lista finita de EventData ou AmqpAnnotatedMessage e souber que ele está dentro do limite de tamanho do quadro do hub de eventos, poderá enviá-los com uma chamada send_batch . Caso contrário, use create_batch para criar EventDataBatch e adicionar EventData ou AmqpAnnotatedMessage no lote um por um até o limite de tamanho e, em seguida, chame esse método para enviar o lote. |
send_event |
Envia dados de evento. Por padrão, o método será bloqueado até que a confirmação seja recebida ou a operação atingir o tempo limite. Se o EventHubProducerClient estiver configurado para ser executado no modo em buffer, o método tentará enfileirar os eventos no buffer dentro do tempo determinado, se especificado e retornado. O produtor fará o envio automático em segundo plano no modo em buffer. Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira: * Se um retorno de chamada on_error for passado durante a instanciação do cliente produtor,
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira: * Se os eventos não conseguirem enfileirar dentro do tempo limite determinado, um erro será gerado diretamente.
|
close
Feche a conexão e os links amqp subjacentes do cliente produtor.
close(*, flush: bool = True, **kwargs: Any) -> None
Parâmetros
- flush
- bool
Somente modo em buffer. Se definido como True, os eventos no buffer serão enviados imediatamente. O padrão é True.
Somente modo em buffer. Tempo limite para fechar o produtor. O padrão é None, o que significa que não há tempo limite.
Tipo de retorno
Exceções
Se ocorreu um erro ao liberar o buffer se flush estiver definido como True ou fechar as conexões AMQP subjacentes no modo em buffer.
Exemplos
Feche o cliente.
import os
from azure.eventhub import EventHubProducerClient, EventData
event_hub_connection_str = os.environ['EVENT_HUB_CONN_STR']
eventhub_name = os.environ['EVENT_HUB_NAME']
producer = EventHubProducerClient.from_connection_string(
conn_str=event_hub_connection_str,
eventhub_name=eventhub_name # EventHub name should be specified if it doesn't show up in connection string.
)
try:
event_data_batch = producer.create_batch()
while True:
try:
event_data_batch.add(EventData('Message inside EventBatchData'))
except ValueError:
# EventDataBatch object reaches max_size.
# New EventDataBatch object can be created here to send more data
break
producer.send_batch(event_data_batch)
finally:
# Close down the producer handler.
producer.close()
create_batch
Crie um objeto EventDataBatch com o tamanho máximo de todo o conteúdo restringido por max_size_in_bytes.
O max_size_in_bytes não deve ser maior do que o tamanho máximo permitido da mensagem definido pelo serviço.
create_batch(**kwargs: Any) -> EventDataBatch
Tipo de retorno
Exceções
Se ocorreu um erro ao liberar o buffer se flush estiver definido como True ou fechar as conexões AMQP subjacentes no modo em buffer.
Exemplos
Criar objeto EventDataBatch dentro do tamanho limitado
event_data_batch = producer.create_batch()
while True:
try:
event_data_batch.add(EventData('Message inside EventBatchData'))
except ValueError:
# The EventDataBatch object reaches its max_size.
# You can send the full EventDataBatch object and create a new one here.
break
flush
Somente modo em buffer. Libere eventos no buffer a serem enviados imediatamente se o cliente estiver trabalhando no modo em buffer.
flush(**kwargs: Any) -> None
Parâmetros
Tempo limite para liberar os eventos armazenados em buffer, o padrão é Nenhum, o que significa que não há tempo limite.
Tipo de retorno
Exceções
Se o produtor não conseguir liberar o buffer dentro do tempo limite especificado no modo armazenado em buffer.
from_connection_string
Crie um EventHubProducerClient de um cadeia de conexão.
from_connection_string(conn_str: str, *, eventhub_name: str | None = None, buffered_mode: Literal[False] = False, **kwargs: Any) -> EventHubProducerClient
Parâmetros
- eventhub_name
- str
O caminho do Hub de Eventos específico ao qual conectar o cliente.
- buffered_mode
- bool
Se True, o cliente produtor coletará eventos em um buffer, em lote com eficiência e publicará. O padrão é Falso.
O ThreadPoolExecutor a ser usado para publicar eventos ou o número de trabalhos para o ThreadPoolExecutor. O padrão é None e um ThreadPoolExecutor com o número padrão de trabalhos será criado por https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
O retorno de chamada a ser chamado depois que um lote for publicado com êxito. O retorno de chamada usa dois parâmetros:
eventos: a lista de eventos que foram publicados com êxito
partition_id: a ID da partição na qual os eventos na lista foram publicados.
A função de retorno de chamada deve ser definida como: on_success(events, partition_id). Obrigatório quando buffered_mode é True enquanto opcional se buffered_mode for False.
O retorno de chamada a ser chamado depois que um lote falha ao ser publicado. Obrigatório quando em buffered_mode for True enquanto opcional se buffered_mode for False. A função de retorno de chamada deve ser definida como: on_error(events, partition_id, error), em que:
eventos: a lista de eventos que não foram publicados,
partition_id: a ID da partição na qual os eventos na lista foram tentados para serem publicados em e
error: a exceção relacionada à falha de envio.
Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira:
Se um retorno de chamada on_error for passado durante a instanciação do cliente produtor,
em seguida, as informações de erro serão passadas para o on_error retorno de chamada, que será chamado.
Se um retorno de chamada on_error não for passado durante a instanciação do cliente,
em seguida, o erro será gerado por padrão.
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira:
Se os eventos não conseguirem enfileirar dentro do tempo limite determinado, um erro será gerado diretamente.
Se os eventos não forem enviados após a enfileiramento com êxito, o retorno de chamada on_error será chamado.
- max_buffer_length
- int
Somente modo em buffer. O número total de eventos por partição que podem ser armazenados em buffer antes que uma liberação seja disparada. O valor padrão é 1500 no modo em buffer.
Somente modo em buffer. O tempo de espera para que um lote seja criado com eventos no buffer antes da publicação. O valor padrão é 1 no modo em buffer.
- logging_enable
- bool
Se os logs de rastreamento de rede devem ser gerados para o agente. O padrão é False.
- http_proxy
- Dict
Configurações de proxy HTTP. Deve ser um dicionário com as seguintes chaves: 'proxy_hostname' (valor str) e 'proxy_port' (valor int). Além disso, as seguintes chaves também podem estar presentes: 'username', 'password'.
- auth_timeout
- float
O tempo em segundos para aguardar que um token seja autorizado pelo serviço. O valor padrão é 60 segundos. Se definido como 0, nenhum tempo limite será imposto do cliente.
- user_agent
- str
Se especificado, isso será adicionado na frente da cadeia de caracteres do agente do usuário.
- retry_total
- int
O número total de tentativas de refazer uma operação com falha quando ocorre um erro. O valor padrão é 3.
- retry_backoff_factor
- float
Um fator de retirada a ser aplicado entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem atraso). No modo fixo, a política de repetição sempre será suspensa para {fator de retirada}. No modo 'exponencial', a política de repetição será suspensa para: {fator de retirada} * (2 ** ({número de tentativas totais} - 1)) segundos. Se o backoff_factor for 0,1, a repetição será suspensa para [0.0s, 0.2s, 0.4s, ...] entre as repetições. O valor padrão é 0,8.
- retry_backoff_max
- float
O tempo máximo de retirada. O valor padrão é 120 segundos (2 minutos).
- retry_mode
- str
O comportamento de atraso entre tentativas de repetição. Os valores com suporte são 'fixo' ou 'exponencial', em que o padrão é 'exponencial'.
- idle_timeout
- float
Tempo limite, em segundos, após o qual esse cliente fechará a conexão subjacente se não houver nenhuma atividade. Por padrão, o valor é None, o que significa que o cliente não será desligado devido à inatividade, a menos que seja iniciado pelo serviço.
- transport_type
- TransportType
O tipo de protocolo de transporte que será usado para se comunicar com o serviço de Hubs de Eventos. O padrão é TransportType.Amqp , caso em que a porta 5671 é usada. Se a porta 5671 não estiver disponível/bloqueada no ambiente de rede, TransportType.AmqpOverWebsocket poderá ser usado, em vez disso, que usa a porta 443 para comunicação.
- http_proxy
Configurações de proxy HTTP. Deve ser um dicionário com as seguintes chaves: 'proxy_hostname' (valor str) e 'proxy_port' (valor int). Além disso, as seguintes chaves também podem estar presentes: 'username', 'password'.
O endereço do ponto de extremidade personalizado a ser usado para estabelecer uma conexão com o serviço de Hubs de Eventos, permitindo que as solicitações de rede sejam roteadas por meio de quaisquer gateways de aplicativo ou outros caminhos necessários para o ambiente de host. O padrão é None. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, por padrão, a porta 443 será usada.
Caminho para o arquivo de CA_BUNDLE personalizado do certificado SSL que é usado para autenticar a identidade do ponto de extremidade de conexão. O padrão é None, caso em que certifi.where() será usado.
- uamqp_transport
- bool
Se a biblioteca uamqp deve ser usada como o transporte subjacente. O valor padrão é False e a biblioteca AMQP pura do Python será usada como o transporte subjacente.
Tipo de retorno
Exceções
Se ocorreu um erro ao liberar o buffer se flush estiver definido como True ou fechar as conexões AMQP subjacentes no modo em buffer.
Exemplos
Crie uma nova instância do EventHubProducerClient do cadeia de conexão.
import os
from azure.eventhub import EventHubProducerClient
event_hub_connection_str = os.environ['EVENT_HUB_CONN_STR']
eventhub_name = os.environ['EVENT_HUB_NAME']
producer = EventHubProducerClient.from_connection_string(
conn_str=event_hub_connection_str,
eventhub_name=eventhub_name # EventHub name should be specified if it doesn't show up in connection string.
)
get_buffered_event_count
O número de eventos armazenados em buffer e aguardando para serem publicados para uma determinada partição. Retorna Nenhum no modo não armazenado em buffer. OBSERVAÇÃO: o buffer de eventos é processado em um thread em segundo plano, portanto, o número de eventos no buffer relatado por essa API deve ser considerado apenas uma aproximação e só é recomendado para uso na depuração. Para uma ID de partição que não tem eventos armazenados em buffer, 0 será retornado independentemente de essa ID de partição realmente existir no Hub de Eventos.
get_buffered_event_count(partition_id: str) -> int | None
Parâmetros
Tipo de retorno
Exceções
Se ocorreu um erro ao liberar o buffer se flush estiver definido como True ou fechar as conexões AMQP subjacentes no modo em buffer.
get_eventhub_properties
Obter propriedades do Hub de Eventos.
As chaves no dicionário retornado incluem:
eventhub_name (str)
created_at (UTC datetime.datetime)
partition_ids (list[str])
get_eventhub_properties() -> Dict[str, Any]
Retornos
Um dicionário que contém as propriedades do eventhub.
Tipo de retorno
Exceções
get_partition_ids
Obter IDs de partição do Hub de Eventos.
get_partition_ids() -> List[str]
Retornos
Uma lista de IDs de partição.
Tipo de retorno
Exceções
get_partition_properties
Obter propriedades da partição especificada.
As chaves no dicionário de propriedades incluem:
eventhub_name (str)
id (str)
beginning_sequence_number (int)
last_enqueued_sequence_number (int)
last_enqueued_offset (str)
last_enqueued_time_utc (UTC datetime.datetime)
is_empty (bool)
get_partition_properties(partition_id: str) -> Dict[str, Any]
Parâmetros
Retornos
Um dicionário de propriedades de partição.
Tipo de retorno
Exceções
send_batch
Envia um lote de dados de evento. Por padrão, o método será bloqueado até que a confirmação seja recebida ou a operação atingir o tempo limite. Se o EventHubProducerClient estiver configurado para ser executado no modo em buffer, o método tentará enfileirar os eventos no buffer dentro do tempo determinado, se especificado e retornado. O produtor fará o envio automático em segundo plano no modo em buffer.
Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira:
Se um retorno de chamada on_error for passado durante a instanciação do cliente produtor,
em seguida, as informações de erro serão passadas para o on_error retorno de chamada, que será chamado.
Se um retorno de chamada on_error não for passado durante a instanciação do cliente,
em seguida, o erro será gerado por padrão.
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira:
Se os eventos não conseguirem enfileirar dentro do tempo limite determinado, um erro será gerado diretamente.
Se os eventos não forem enviados após a enfileiramento com êxito, o retorno de chamada on_error será chamado.
No modo em buffer, o envio de um lote permanecerá intacto e enviado como uma única unidade. O lote não será reorganizado. Isso pode resultar em ineficiência do envio de eventos.
Se você estiver enviando uma lista finita de EventData ou AmqpAnnotatedMessage e souber que ele está dentro do limite de tamanho do quadro do hub de eventos, poderá enviá-los com uma chamada send_batch . Caso contrário, use create_batch para criar EventDataBatch e adicionar EventData ou AmqpAnnotatedMessage no lote um por um até o limite de tamanho e, em seguida, chame esse método para enviar o lote.
send_batch(event_data_batch: EventDataBatch | List[EventData | AmqpAnnotatedMessage], **kwargs: Any) -> None
Parâmetros
- event_data_batch
- Union[EventDataBatch, List[Union[EventData, AmqpAnnotatedMessage]]
O objeto EventDataBatch a ser enviado ou uma lista de EventData a ser enviado em um lote. Todos os EventData ou AmqpAnnotatedMessage na lista ou EventDataBatch chegarão à mesma partição.
- timeout
- float
O tempo máximo de espera para enviar os dados do evento no modo não armazenado em buffer ou o tempo máximo de espera para enfileirar os dados do evento no buffer no modo em buffer. No modo sem buffer, o tempo de espera padrão especificado quando o produtor foi criado será usado. No modo em buffer, o tempo de espera padrão é Nenhum.
- partition_id
- str
A ID de partição específica para a qual enviar. O padrão é None; nesse caso, o serviço atribuirá a todas as partições usando round robin. Um TypeError será gerado se partition_id for especificado e event_data_batch for um EventDataBatch porque o próprio EventDataBatch tem partition_id.
- partition_key
- str
Com o partition_key fornecido, os dados de evento serão enviados para uma partição específica do Hub de Eventos decidido pelo serviço. Um TypeError será gerado se partition_key for especificado e event_data_batch for um EventDataBatch porque o próprio EventDataBatch tem partition_key. Se partition_id e partition_key forem fornecidos, o partition_id terá precedência. AVISO: definir partition_key de valor não cadeia de caracteres nos eventos a serem enviados não é desencorajado, pois o partition_key será ignorado pelo serviço do Hub de Eventos e os eventos serão atribuídos a todas as partições usando round robin. Além disso, há SDKs para consumir eventos que esperam que partition_key seja apenas o tipo de cadeia de caracteres, eles podem falhar ao analisar o valor não cadeia de caracteres.
Tipo de retorno
Exceções
Se o valor especificado pelo parâmetro de tempo limite decorrer antes que o evento possa ser enviado no modo sem buffer ou se os eventos não puderem ser enfileirados no buffer no modo em buffer.
Exemplos
Envia dados de evento
with producer:
event_data_batch = producer.create_batch()
while True:
try:
event_data_batch.add(EventData('Message inside EventBatchData'))
except ValueError:
# EventDataBatch object reaches max_size.
# New EventDataBatch object can be created here to send more data
break
producer.send_batch(event_data_batch)
send_event
Envia dados de evento. Por padrão, o método será bloqueado até que a confirmação seja recebida ou a operação atingir o tempo limite. Se o EventHubProducerClient estiver configurado para ser executado no modo em buffer, o método tentará enfileirar os eventos no buffer dentro do tempo determinado, se especificado e retornado. O produtor fará o envio automático em segundo plano no modo em buffer.
Se buffered_mode for False, on_error retorno de chamada será opcional e os erros serão tratados da seguinte maneira: * Se um retorno de chamada on_error for passado durante a instanciação do cliente produtor,
then error information will be passed to the *on_error* callback, which will then be called.
* If an *on_error* callback is not passed in during client instantiation,
then the error will be raised by default.
Se buffered_mode for True, on_error retorno de chamada será necessário e os erros serão tratados da seguinte maneira: * Se os eventos não conseguirem enfileirar dentro do tempo limite determinado, um erro será gerado diretamente.
* If events fail to send after enqueuing successfully, the *on_error* callback will be called.
send_event(event_data: EventData | AmqpAnnotatedMessage, **kwargs: Any) -> None
Parâmetros
- timeout
- float
O tempo máximo de espera para enviar os dados do evento no modo não armazenado em buffer ou o tempo máximo de espera para enfileirar os dados do evento no buffer no modo em buffer. No modo sem buffer, o tempo de espera padrão especificado quando o produtor foi criado será usado. No modo em buffer, o tempo de espera padrão é Nenhum.
- partition_id
- str
A ID de partição específica para a qual enviar. O padrão é None; nesse caso, o serviço atribuirá a todas as partições usando round robin. Um TypeError será gerado se partition_id for especificado e event_data_batch for um EventDataBatch porque o próprio EventDataBatch tem partition_id.
- partition_key
- str
Com o partition_key fornecido, os dados de evento serão enviados para uma partição específica do Hub de Eventos decidido pelo serviço. Um TypeError será gerado se partition_key for especificado e event_data_batch for um EventDataBatch porque o próprio EventDataBatch tem partition_key. Se partition_id e partition_key forem fornecidos, o partition_id terá precedência. AVISO: definir partition_key de valor não cadeia de caracteres nos eventos a serem enviados não é desencorajado, pois o partition_key será ignorado pelo serviço do Hub de Eventos e os eventos serão atribuídos a todas as partições usando round robin. Além disso, há SDKs para consumir eventos que esperam que partition_key seja apenas o tipo de cadeia de caracteres, eles podem falhar ao analisar o valor não cadeia de caracteres.
Tipo de retorno
Exceções
Se o valor especificado pelo parâmetro de tempo limite decorrer antes que o evento possa ser enviado no modo sem buffer ou os eventos puderem ser enfileirados no buffer no modo em buffer.
Atributos
total_buffered_event_count
O número total de eventos atualmente armazenados em buffer e aguardando para serem publicados em todas as partições. Retorna None no modo não armazenado em buffer. OBSERVAÇÃO: o buffer de eventos é processado em um thread em segundo plano, portanto, o número de eventos no buffer relatado por essa API deve ser considerado apenas uma aproximação e é recomendado apenas para uso na depuração.
Tipo de retorno
Azure SDK for Python