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.aio._client_base_async.ClientBaseAsyncEventHubProducerClient
Construtor
EventHubProducerClient(fully_qualified_namespace: str, eventhub_name: str, credential: CredentialTypes, *, buffered_mode: bool = False, on_error: Callable[[List[EventData | AmqpAnnotatedMessage], str | None, Exception], Awaitable[None]] | None = None, on_success: Callable[[List[EventData | AmqpAnnotatedMessage], str | None], Awaitable[None]] | None = None, max_buffer_length: int | None = None, max_wait_time: float | None = None, **kwargs: Any)
Parâmetros
- fully_qualified_namespace
- str
O nome de anfitrião completamente qualificado para o espaço de nomes dos Hubs de Eventos. É provável que seja semelhante a .servicebus.windows.net
- credential
- AsyncTokenCredential ou AzureSasCredential ou AzureNamedKeyCredential
O objeto de credencial utilizado para autenticação que implementa uma interface específica para obter tokens. Aceita objetos EventHubSharedKeyCredentialde credenciais ou ou gerados pela biblioteca de identidades do azure e objetos que implementam o método *get_token(auto, âmbitos ).
- buffered_mode
- bool
Se For Verdadeiro, o cliente de produtor recolherá eventos numa memória intermédia, em lote eficiente e, em seguida, publicará. A predefinição é Falso.
A chamada de retorno a ser chamada assim que um lote tiver sido publicado com êxito. A chamada de retorno utiliza dois parâmetros:
eventos: a lista de eventos que foram publicados com êxito
partition_id: o ID de partição no qual os eventos na lista foram publicados.
A função de chamada de retorno deve ser definida como: on_success(eventos, partition_id). Necessário quando buffered_mode é Verdadeiro enquanto opcional se buffered_mode for Falso.
A chamada de retorno a ser chamada depois de um lote não ter sido publicado. Necessário quando no buffered_mode é Verdadeiro enquanto opcional se buffered_mode for Falso. A função de chamada de retorno deve ser definida como: on_error(eventos, partition_id, erro); em que:
eventos: a lista de eventos que não foram publicados,
partition_id: o ID de partição no qual os eventos na lista foram tentados a publicar e
error: A exceção relacionada com a falha de envio.
Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma:
Se for transmitida uma chamada de retorno on_error durante a instanciação do cliente do produtor,
em seguida, as informações de erro serão transmitidas à chamada de retorno on_error , que será chamada.
Se uma chamada de retorno de on_error não for transmitida durante a instanciação do cliente,
em seguida, o erro será gerado por predefinição.
Se buffered_mode for Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma:
Se os eventos não conseguirem colocar a fila dentro do tempo limite especificado, será gerado um erro diretamente.
Se os eventos não conseguirem enviar após a colocação em fila com êxito, a chamada de retorno on_error será chamada.
- max_buffer_length
- int
Apenas modo em memória intermédia. O número total de eventos por partição que podem ser colocados em memória intermédia antes de ser acionada uma descarga. O valor predefinido é 1500 no modo de memória intermédia.
Apenas modo em memória intermédia. A quantidade de tempo a aguardar que um lote seja criado com eventos na memória intermédia antes da publicação. O valor predefinido é 1 no modo de memória intermédia.
- logging_enable
- bool
Se pretende gerar registos de rastreio de rede para o logger. A predefinição é Falso.
- auth_timeout
- float
O tempo em segundos para aguardar que um token seja autorizado pelo serviço. O valor predefinido é 60 segundos. Se estiver definido como 0, não será aplicado nenhum tempo limite ao cliente.
- user_agent
- str
Se for especificado, este procedimento será adicionado à frente da cadeia de agente do utilizador.
- retry_total
- int
O número total de tentativas de refazer uma operação falhada quando ocorre um erro. O valor predefinido é 3.
- retry_backoff_factor
- float
Um fator de back-off a aplicar entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem demora). No modo fixo, a política de repetição irá sempre suspender para {backoff factor}. No modo "exponencial", a política de repetição irá suspender para: {backoff factor} * (2 ** ({número de repetições totais} - 1)) segundos. Se o backoff_factor for 0,1, a repetição irá suspender para [0,0s, 0,2s, 0,4s, ...] entre repetições. O valor predefinido é 0,8.
- retry_backoff_max
- float
O tempo máximo de back-off. O valor predefinido é 120 segundos (2 minutos).
- retry_mode
- str
O comportamento de atraso entre tentativas de repetição. Os valores suportados são "fixos" ou "exponenciais", em que a predefinição é "exponencial".
- idle_timeout
- float
Tempo limite, em segundos, após o qual este cliente fechará a ligação subjacente se não existir atividade. Por predefinição, o valor é Nenhum, o que significa que o cliente não será encerrado devido à inatividade, a menos que seja iniciado pelo serviço.
- transport_type
- TransportType
O tipo de protocolo de transporte que será utilizado para comunicar com o serviço Hubs de Eventos. A predefinição é TransportType.Amqp , caso em que a porta 5671 é utilizada. Se a porta 5671 estiver indisponível/bloqueada no ambiente de rede, pode utilizar TransportType.AmqpOverWebsocket , que utiliza a porta 443 para comunicação.
- http_proxy
- dict
Definições de proxy HTTP. Este tem de ser um dicionário com as seguintes chaves: "proxy_hostname" (valor de str) e "proxy_port" (valor int). Além disso, também podem estar presentes as seguintes chaves: "nome de utilizador", "palavra-passe".
O endereço de ponto final personalizado a utilizar para estabelecer uma ligação ao serviço Hubs de Eventos, permitindo que os pedidos de rede sejam encaminhados através de quaisquer gateways de aplicação ou outros caminhos necessários para o ambiente anfitrião. A predefinição é Nenhuma. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, será utilizada por predefinição a porta 443.
Caminho para o ficheiro de CA_BUNDLE personalizado do certificado SSL que é utilizado para autenticar a identidade do ponto final de ligação. A predefinição é Nenhuma, caso em que a certificação.where() será utilizada.
- uamqp_transport
- bool
Se pretende utilizar a biblioteca uamqp como o transporte subjacente. O valor predefinido é Falso e a biblioteca AMQP de Python Puro será utilizada como o transporte subjacente.
- socket_timeout
- float
O tempo em segundos que o socket subjacente na ligação deve aguardar ao enviar e receber dados antes de exceder o tempo limite. O valor predefinido é 0,2 para TransportType.Amqp e 1 para TransportType.AmqpOverWebsocket. Se os erros do EventHubsConnectionError estiverem a ocorrer devido ao tempo limite de escrita, poderá ser necessário transmitir um valor maior do que o predefinido. Isto destina-se a cenários de utilização avançada e, normalmente, o valor predefinido deve ser suficiente.
Exemplos
Crie uma nova instância do EventHubProducerClient.
import os
from azure.eventhub.aio 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']
producer = EventHubProducerClient(fully_qualified_namespace=fully_qualified_namespace,
eventhub_name=eventhub_name,
credential=EventHubSharedKeyCredential(shared_access_policy, shared_access_key))
Métodos
close |
Feche as ligações e a ligação amQP subjacentes ao cliente produtor. |
create_batch |
Crie um objeto EventDataBatch com o tamanho máximo de todo o conteúdo a ser restringido por max_size_in_bytes. O max_size_in_bytes não deve ser maior do que o tamanho máximo de mensagens permitido definido pelo serviço. |
flush |
Apenas modo em memória intermédia. Remova os eventos na memória intermédia para serem enviados imediatamente se o cliente estiver a trabalhar no modo de memória intermédia. |
from_connection_string |
Crie um EventHubProducerClient a partir de um cadeia de ligação. |
get_buffered_event_count |
O número de eventos que estão em memória intermédia e à espera de serem publicados para uma determinada partição. Devolve Nenhum no modo não colocado na memória intermédia. NOTA: a memória intermédia de eventos é processada num corouteno em segundo plano, pelo que o número de eventos na memória intermédia comunicados por esta API deve ser considerado apenas uma aproximação e só é recomendado para utilização na depuração. Para um ID de partição que não tenha eventos em memória intermédia, 0 será devolvido independentemente de esse ID de partição existir realmente no Hub de Eventos. |
get_eventhub_properties |
Obtenha as propriedades do Hub de Eventos. As chaves no dicionário devolvido incluem:
|
get_partition_ids |
Obter IDs de partição do Hub de Eventos. |
get_partition_properties |
Obtenha as propriedades da partição especificada. As chaves no dicionário de propriedades incluem:
|
send_batch |
Envia um lote de dados de eventos. Por predefinição, o método bloqueará até a confirmação ser recebida ou a operação exceder o limite de tempo. Se o EventHubProducerClient estiver configurado para ser executado no modo de memória intermédia, o método irá colocar os eventos na memória intermédia local e regressar. O produtor fará o envio automático em segundo plano. Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma:
Se buffered_mode for Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma:
No modo de memória intermédia, o envio de um lote permanecerá intacto e será enviado como uma única unidade. O lote não será reorganizado. Isto pode resultar em ineficiência no envio de eventos. Se estiver a enviar uma lista finita de EventData ou AmqpAnnotatedMessage e souber que está dentro do limite de tamanho da moldura do hub de eventos, pode enviá-los com uma chamada send_batch . Caso contrário, utilize create_batch para criar EventDataBatch e adicionar EventData ou AmqpAnnotatedMessage no lote um a um até ao limite de tamanho e, em seguida, chame este método para enviar o lote. |
send_event |
Envia dados de eventos. Por predefinição, o método bloqueará até a confirmação ser recebida ou a operação exceder o limite de tempo. Se o EventHubProducerClient estiver configurado para ser executado no modo de memória intermédia, o método colocará o evento na memória intermédia local e regressará. O produtor fará o batching automático e o envio em segundo plano. Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma: * Se for transmitida uma chamada de retorno de on_error durante a instanciação do cliente de produtor,
Se buffered_mode for Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma: * Se os eventos não conseguirem colocar em fila dentro do tempo limite especificado, será gerado um erro diretamente.
|
close
Feche as ligações e a ligação amQP subjacentes ao cliente produtor.
async close(*, flush: bool = True, **kwargs: Any) -> None
Parâmetros
- flush
- bool
Apenas modo em memória intermédia. Se estiver definido como Verdadeiro, os eventos na memória intermédia serão enviados imediatamente. A predefinição é Verdadeiro.
Apenas modo em memória intermédia. Tempo limite para fechar o produtor. A predefinição é Nenhuma, o que significa que não há tempo limite.
Tipo de retorno
Exceções
Se ocorreu um erro ao remover a memória intermédia se a descarga estiver definida como Verdadeiro ou fechar as ligações AMQP subjacentes no modo de memória intermédia.
Exemplos
Feche o processador.
import os
from azure.eventhub.aio import EventHubProducerClient
from azure.eventhub import 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 = await 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
await producer.send_batch(event_data_batch)
finally:
# Close down the producer handler.
await producer.close()
create_batch
Crie um objeto EventDataBatch com o tamanho máximo de todo o conteúdo a ser restringido por max_size_in_bytes.
O max_size_in_bytes não deve ser maior do que o tamanho máximo de mensagens permitido definido pelo serviço.
async create_batch(*, partition_id: str | None = None, partition_key: str | None = None, max_size_in_bytes: int | None = None) -> EventDataBatch
Tipo de retorno
Exceções
Se ocorreu um erro ao remover a memória intermédia se a descarga estiver definida como Verdadeiro ou fechar as ligações AMQP subjacentes no modo de memória intermédia.
Exemplos
Criar objeto EventDataBatch com um tamanho limitado
from azure.eventhub import EventData
event_data_batch = await 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
Apenas modo em memória intermédia. Remova os eventos na memória intermédia para serem enviados imediatamente se o cliente estiver a trabalhar no modo de memória intermédia.
async flush(**kwargs: Any) -> None
Parâmetros
Tempo limite para remover os eventos em memória intermédia, a predefinição é Nenhum, o que significa que não há tempo limite.
Tipo de retorno
Exceções
Se o produtor não conseguir remover a memória intermédia dentro do tempo limite especificado no modo de memória intermédia.
from_connection_string
Crie um EventHubProducerClient a partir de um cadeia de ligação.
from_connection_string(conn_str: str, *, eventhub_name: str | None = None, buffered_mode: bool = False, on_error: Callable[[List[EventData | AmqpAnnotatedMessage], str | None, Exception], Awaitable[None]] | None = None, on_success: Callable[[List[EventData | AmqpAnnotatedMessage], str | None], Awaitable[None]] | None = None, max_buffer_length: int | None = None, max_wait_time: float | None = None, logging_enable: bool = False, http_proxy: Dict[str, str | int] | None = None, auth_timeout: float = 60, user_agent: str | None = None, retry_total: int = 3, transport_type: TransportType = TransportType.Amqp, **kwargs: Any) -> EventHubProducerClient
Parâmetros
- eventhub_name
- str
O caminho do Hub de Eventos específico ao qual ligar o cliente.
- buffered_mode
- bool
Se For Verdadeiro, o cliente de produtor recolherá eventos numa memória intermédia, em lote eficiente e, em seguida, publicará. A predefinição é Falso.
A chamada de retorno a ser chamada assim que um lote tiver sido publicado com êxito. A chamada de retorno utiliza dois parâmetros:
eventos: a lista de eventos que foram publicados com êxito
partition_id: o ID da partição no qual os eventos na lista foram publicados.
A função de chamada de retorno deve ser definida como: on_success(eventos, partition_id). É necessário quando buffered_mode é Verdadeiro enquanto opcional se buffered_mode for Falso.
A chamada de retorno a ser chamada depois de um lote não ter sido publicado. A função de chamada de retorno deve ser definida como: on_error(eventos, partition_id, erro); em que:
eventos: a lista de eventos que não foram publicados,
partition_id: o ID da partição no qual os eventos na lista foram tentados a ser publicados e
erro: a exceção relacionada com a falha de envio.
Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma:
Se for transmitida uma chamada de retorno on_error durante a instanciação do cliente de produtor,
em seguida, as informações de erro serão transmitidas à chamada de retorno on_error , que será chamada.
Se uma chamada de retorno de on_error não for transmitida durante a instanciação do cliente,
em seguida, o erro será gerado por predefinição.
Se buffered_mode for Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma:
Se os eventos não conseguirem fazer a fila dentro do tempo limite especificado, será gerado um erro diretamente.
Se os eventos não conseguirem enviar depois de colocar a fila com êxito, a chamada de retorno on_error será chamada.
- max_buffer_length
- int
Apenas modo de memória intermédia. O número total de eventos por partição que podem ser colocados na memória intermédia antes de ser acionada uma descarga. O valor predefinido é 1500 no modo de memória intermédia.
Apenas modo de memória intermédia. A quantidade de tempo a aguardar a criação de um lote com eventos na memória intermédia antes da publicação. O valor predefinido é 1 no modo de memória intermédia.
- logging_enable
- bool
Se pretende exportar registos de rastreio de rede para o logger. A predefinição é Falso.
- http_proxy
- dict
Definições de proxy HTTP. Tem de ser um dicionário com as seguintes chaves: "proxy_hostname" (valor str) e "proxy_port" (valor int). Além disso, também podem estar presentes as seguintes chaves: "nome de utilizador", "palavra-passe".
- auth_timeout
- float
O tempo em segundos a aguardar que um token seja autorizado pelo serviço. O valor predefinido é 60 segundos. Se estiver definido como 0, não será imposto nenhum tempo limite do cliente.
- user_agent
- str
Se for especificado, será adicionado à frente da cadeia de agente do utilizador.
- retry_total
- int
O número total de tentativas de refazer uma operação falhada quando ocorre um erro. O valor predefinido é 3.
- retry_backoff_factor
- float
Um fator de recuo a aplicar entre tentativas após a segunda tentativa (a maioria dos erros é resolvida imediatamente por uma segunda tentativa sem demora). No modo fixo, a política de repetição irá sempre suspender para {backoff factor}. No modo "exponencial", a política de repetição irá suspender durante: {backoff factor} * (2 ** ({número de repetições totais} - 1)) segundos. Se o backoff_factor for 0,1, a repetição irá suspender para [0,0s, 0,2s, 0,4s, ...] entre repetições. O valor predefinido é 0,8.
- retry_backoff_max
- float
O tempo máximo de folga. O valor predefinido é 120 segundos (2 minutos).
- retry_mode
- str
O comportamento de atraso entre tentativas de repetição. Os valores suportados são "fixos" ou "exponenciais", em que a predefinição é "exponencial".
- idle_timeout
- float
Tempo limite, em segundos, após o qual este cliente fechará a ligação subjacente se não houver atividade. Por predefinição, o valor é Nenhum, o que significa que o cliente não será encerrado devido a inatividade, a menos que seja iniciado pelo serviço.
- transport_type
- TransportType
O tipo de protocolo de transporte que será utilizado para comunicar com o serviço Hubs de Eventos. A predefinição é TransportType.Amqp , caso em que é utilizada a porta 5671. Se a porta 5671 estiver indisponível/bloqueada no ambiente de rede, pode utilizar TransportType.AmqpOverWebsocket , que utiliza a porta 443 para comunicação.
O endereço de ponto final personalizado a utilizar para estabelecer uma ligação ao serviço dos Hubs de Eventos, permitindo que os pedidos de rede sejam encaminhados através de quaisquer gateways de aplicação ou outros caminhos necessários para o ambiente anfitrião. A predefinição é Nenhuma. O formato seria como "sb://< custom_endpoint_hostname>:<custom_endpoint_port>". Se a porta não for especificada no custom_endpoint_address, será utilizada por predefinição a porta 443.
Caminho para o ficheiro de CA_BUNDLE personalizado do certificado SSL que é utilizado para autenticar a identidade do ponto final de ligação. A predefinição é Nenhum, caso em que certifi.where() será utilizado.
- uamqp_transport
- bool
Se pretende utilizar a biblioteca uamqp como o transporte subjacente. O valor predefinido é Falso e a biblioteca AMQP de Python Puro será utilizada como o transporte subjacente.
Tipo de retorno
Exceções
Se ocorreu um erro ao remover a memória intermédia se a descarga estiver definida como Verdadeiro ou fechar as ligações AMQP subjacentes no modo de memória intermédia.
Exemplos
Crie uma nova instância do EventHubProducerClient a partir de cadeia de ligação.
import os
from azure.eventhub.aio 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 que estão em memória intermédia e à espera de serem publicados para uma determinada partição. Devolve Nenhum no modo não colocado na memória intermédia. NOTA: a memória intermédia de eventos é processada num corouteno em segundo plano, pelo que o número de eventos na memória intermédia comunicados por esta API deve ser considerado apenas uma aproximação e só é recomendado para utilização na depuração. Para um ID de partição que não tenha eventos em memória intermédia, 0 será devolvido independentemente de esse ID de partição existir realmente 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 remover a memória intermédia se a descarga estiver definida como Verdadeiro ou fechar as ligações AMQP subjacentes no modo de memória intermédia.
get_eventhub_properties
Obtenha as propriedades do Hub de Eventos.
As chaves no dicionário devolvido incluem:
eventhub_name (str)
created_at (UTC datetime.datetime)
partition_ids (list[str])
async get_eventhub_properties() -> Dict[str, Any]
Devoluções
Um dicionário que contém informações sobre o Hub de Eventos.
Tipo de retorno
Exceções
get_partition_ids
Obter IDs de partição do Hub de Eventos.
async get_partition_ids() -> List[str]
Devoluções
Uma lista de IDs de partição.
Tipo de retorno
Exceções
get_partition_properties
Obtenha as 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)
async get_partition_properties(partition_id: str) -> Dict[str, Any]
Parâmetros
Devoluções
Um ditado das propriedades da partição.
Tipo de retorno
Exceções
send_batch
Envia um lote de dados de eventos. Por predefinição, o método bloqueará até a confirmação ser recebida ou a operação exceder o limite de tempo. Se o EventHubProducerClient estiver configurado para ser executado no modo de memória intermédia, o método irá colocar os eventos na memória intermédia local e regressar. O produtor fará o envio automático em segundo plano.
Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma:
Se for transmitida uma chamada de retorno on_error durante a instanciação do cliente do produtor,
em seguida, as informações de erro serão transmitidas à chamada de retorno on_error , que será chamada.
Se uma chamada de retorno de on_error não for transmitida durante a instanciação do cliente,
em seguida, o erro será gerado por predefinição.
Se buffered_mode for Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma:
Se os eventos não conseguirem colocar a fila dentro do tempo limite especificado, será gerado um erro diretamente.
Se os eventos não conseguirem enviar após a colocação em fila com êxito, a chamada de retorno on_error será chamada.
No modo de memória intermédia, o envio de um lote permanecerá intacto e será enviado como uma única unidade. O lote não será reorganizado. Isto pode resultar em ineficiência no envio de eventos.
Se estiver a enviar uma lista finita de EventData ou AmqpAnnotatedMessage e souber que está dentro do limite de tamanho da moldura do hub de eventos, pode enviá-los com uma chamada send_batch . Caso contrário, utilize create_batch para criar EventDataBatch e adicionar EventData ou AmqpAnnotatedMessage no lote um a um até ao limite de tamanho e, em seguida, chame este método para enviar o lote.
async 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 enviar num lote. Todos os EventData ou AmqpAnnotatedMessage na lista ou EventDataBatch serão colocados na mesma partição.
- timeout
- float
O tempo máximo de espera para enviar os dados do evento no modo não intermédia ou o tempo máximo de espera para colocar os dados do evento na memória intermédia no modo de memória intermédia. No modo não intermédia, será utilizado o tempo de espera predefinido especificado quando o produtor foi criado. No modo de memória intermédia, o tempo de espera predefinido é Nenhum.
- partition_id
- str
O ID de partição específico para o qual enviar. A predefinição é Nenhuma, caso em que o serviço irá atribuir a todas as partições com round robin. Será gerado um TypeError 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 especificado, os dados do evento serão enviados para uma partição específica do Hub de Eventos decidida pelo serviço. Será gerado um TypeError se partition_key for especificado e event_data_batch for um EventDataBatch porque o Próprio EventDataBatch tem partition_key. Se forem fornecidos partition_id e partition_key, a partition_id terá precedência. AVISO: Definir partition_key de valor não cadeia nos eventos a enviar é desencorajada, uma vez que o partition_key será ignorado pelo serviço Hub de Eventos e os eventos serão atribuídos a todas as partições com round robin. Além disso, existem SDKs para consumir eventos que esperam que partition_key sejam apenas tipo de cadeia, podem não conseguir analisar o valor de não cadeia.
Tipo de retorno
Exceções
Se o valor especificado pelo parâmetro de tempo limite decorrido antes de o evento poder ser enviado em modo não intermédia ou os eventos puderem ser colocados em fila de colocação na memória intermédia no modo de memória intermédia.
Exemplos
Assíncrono envia dados de eventos de forma assíncrona
async with producer:
event_data_batch = await 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
await producer.send_batch(event_data_batch)
send_event
Envia dados de eventos. Por predefinição, o método bloqueará até a confirmação ser recebida ou a operação exceder o limite de tempo. Se o EventHubProducerClient estiver configurado para ser executado no modo de memória intermédia, o método colocará o evento na memória intermédia local e regressará. O produtor fará o batching automático e o envio em segundo plano.
Se buffered_mode for Falso, on_error chamada de retorno é opcional e os erros serão processados da seguinte forma: * Se for transmitida uma chamada de retorno de on_error durante a instanciação do cliente de 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 Verdadeiro, on_error chamada de retorno é necessária e os erros serão processados da seguinte forma: * Se os eventos não conseguirem colocar em fila dentro do tempo limite especificado, será gerado um erro diretamente.
* If events fail to send after enqueuing successfully, the *on_error* callback will be called.
async 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 intermédia ou o tempo máximo de espera para colocar os dados do evento na memória intermédia no modo de memória intermédia. No modo não intermédia, será utilizado o tempo de espera predefinido especificado quando o produtor foi criado. No modo de memória intermédia, o tempo de espera predefinido é Nenhum.
- partition_id
- str
O ID de partição específico para o qual enviar. A predefinição é Nenhuma, caso em que o serviço irá atribuir a todas as partições com round robin. Será gerado um TypeError se partition_id for especificado e event_data_batch for um EventDataBatch porque EventDataBatch tem partition_id.
- partition_key
- str
Com o partition_key especificado, os dados do evento serão enviados para uma partição específica do Hub de Eventos decidida pelo serviço. Será gerado um TypeError se partition_key for especificado e event_data_batch for um EventDataBatch porque EventDataBatch tem partition_key. Se forem fornecidos partition_id e partition_key, o partition_id terá precedência. AVISO: Definir partition_key de valor não cadeia nos eventos a enviar é desencorajada, uma vez que o partition_key será ignorado pelo serviço Hub de Eventos e os eventos serão atribuídos a todas as partições com round robin. Além disso, existem SDKs para consumir eventos que esperam que partition_key sejam apenas tipo de cadeia, podem não conseguir analisar o valor de não cadeia.
Tipo de retorno
Exceções
Se o valor especificado pelo parâmetro de tempo limite decorrido antes de o evento poder ser enviado no modo não intermédia ou os eventos não puderem ser colocados em fila intermédia no modo de memória intermédia.
Atributos
total_buffered_event_count
O número total de eventos que estão atualmente em memória intermédia e à espera de serem publicados, em todas as partições. Devolve Nenhum no modo não intermédia. NOTA: a memória intermédia de eventos é processada num corouteno em segundo plano, pelo que o número de eventos na memória intermédia comunicados por esta API deve ser considerado apenas uma aproximação e só é recomendado para utilização na depuração.
Tipo de retorno
Azure SDK for Python