EventHubProducerClient Classe
La classe EventHubProducerClient définit une interface de haut niveau pour l’envoi d’événements au service Azure Event Hubs.
- Héritage
-
azure.eventhub._client_base.ClientBaseEventHubProducerClient
Constructeur
EventHubProducerClient(fully_qualified_namespace: str, eventhub_name: str, credential: CredentialTypes, *, buffered_mode: Literal[False] = False, **kwargs: Any)
Paramètres
- fully_qualified_namespace
- str
Nom d’hôte complet de l’espace de noms Event Hubs. Cela est susceptible d’être similaire à .servicebus.windows.net
- eventhub_name
- str
Chemin d’accès du hub d’événements spécifique auquel connecter le client.
- credential
- TokenCredential ou AzureSasCredential ou AzureNamedKeyCredential
Objet d’informations d’identification utilisé pour l’authentification qui implémente une interface particulière pour obtenir des jetons. Il accepte EventHubSharedKeyCredentialles objets d’informations d’identification ou générés par la bibliothèque d’identité azure et les objets qui implémentent la méthode *get_token(self, scopes).
- buffered_mode
- bool
Si la valeur est True, le client producteur collecte les événements dans une mémoire tampon, effectue un traitement par lot efficace, puis publie. La valeur par défaut est FALSE.
ThreadPoolExecutor à utiliser pour la publication d’événements ou le nombre de workers pour ThreadPoolExecutor. La valeur par défaut est None et un ThreadPoolExecutor avec le nombre par défaut de workers est créé par https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
Rappel à appeler une fois qu’un lot a été publié avec succès. Le rappel prend deux paramètres :
événements : liste des événements qui ont été publiés avec succès
partition_id : ID de partition sur lequel les événements de la liste ont été publiés.
La fonction de rappel doit être définie comme suit : on_success(events, partition_id). Elle est obligatoire lorsque buffered_mode a la valeur True, alors qu’elle est facultative si buffered_mode a la valeur False.
Le rappel à appeler une fois qu’un lot n’a pas pu être publié. La fonction de rappel doit être définie comme suit : on_error(events, partition_id, error) où :
événements : liste des événements qui n’ont pas pu être publiés,
partition_id : ID de partition dans lequel les événements de la liste ont été tentés d’être publiés et
error : exception liée à l’échec d’envoi.
Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit :
Si un rappel on_error est passé pendant l’instanciation du client producteur,
ensuite, les informations d’erreur sont transmises au rappel on_error , qui sera ensuite appelé.
Si un rappel on_error n’est pas passé pendant l’instanciation du client,
l’erreur est alors déclenchée par défaut.
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit :
Si les événements ne parviennent pas à mettre en file d’attente dans le délai d’attente donné, une erreur est directement générée.
Si les événements ne parviennent pas à être envoyés après la mise en file d’attente, le rappel on_error est appelé.
- max_buffer_length
- int
Mode mis en mémoire tampon uniquement. Le nombre total d’événements par partition pouvant être mis en mémoire tampon avant qu’un vidage soit déclenché. La valeur par défaut est 1500 en mode mis en mémoire tampon.
Mode mis en mémoire tampon uniquement. Durée d’attente avant la publication d’un lot avec des événements dans la mémoire tampon. La valeur par défaut est 1 en mode mis en mémoire tampon.
- logging_enable
- bool
Indique s’il faut générer des journaux de trace réseau vers l’enregistreur d’événements. La valeur par défaut est False.
- auth_timeout
- float
Temps en secondes d’attente pour qu’un jeton soit autorisé par le service. La valeur par défaut est 60 secondes. Si la valeur est 0, aucun délai d’attente n’est appliqué à partir du client.
- user_agent
- str
Si elle est spécifiée, elle est ajoutée devant la chaîne de l’agent utilisateur.
- retry_total
- int
Nombre total de tentatives de restauration d’une opération ayant échoué en cas d’erreur. La valeur par défaut est 3.
- retry_backoff_factor
- float
Facteur d’annulation à appliquer entre les tentatives après la deuxième tentative (la plupart des erreurs sont résolues immédiatement par un deuxième essai sans délai). En mode fixe, la stratégie de nouvelle tentative est toujours mise en veille pour {facteur d’arrêt}. En mode « exponentiel », la stratégie de nouvelle tentative est mise en veille pendant : {facteur d’interruption} * (2 ** ({nombre de nouvelles tentatives totales} - 1)) secondes. Si le backoff_factor est 0,1, la nouvelle tentative est mise en veille pour [0,0, 0,2s, 0,4s, ...] entre les nouvelles tentatives. La valeur par défaut est 0,8.
- retry_backoff_max
- float
Temps d’arrêt maximal. La valeur par défaut est 120 secondes (2 minutes).
- retry_mode
- str
Comportement de retard entre les tentatives de nouvelle tentative. Les valeurs prises en charge sont « fixes » ou « exponentielles », où la valeur par défaut est « exponentielle ».
- idle_timeout
- float
Délai d’expiration, en secondes, après quoi ce client ferme la connexion sous-jacente en l’absence d’activité. Par défaut, la valeur est None, ce qui signifie que le client ne s’arrêtera pas en raison d’une inactivité, sauf si le service l’a initié.
- transport_type
- TransportType
Type de protocole de transport qui sera utilisé pour communiquer avec le service Event Hubs. La valeur par défaut est TransportType.Amqp , auquel cas le port 5671 est utilisé. Si le port 5671 n’est pas disponible/bloqué dans l’environnement réseau, TransportType.AmqpOverWebsocket peut être utilisé à la place, qui utilise le port 443 pour la communication.
- http_proxy
- Dict
Paramètres du proxy HTTP. Il doit s’agir d’un dictionnaire avec les clés suivantes : « proxy_hostname » (valeur str) et « proxy_port » (valeur int). En outre, les clés suivantes peuvent également être présentes : « nom d’utilisateur », « mot de passe ».
Adresse de point de terminaison personnalisée à utiliser pour établir une connexion au service Event Hubs, ce qui permet aux demandes réseau d’être acheminées via toutes les passerelles d’application ou d’autres chemins nécessaires à l’environnement hôte. La valeur par défaut est None. Le format est « sb://< custom_endpoint_hostname> :<custom_endpoint_port> ». Si le port n’est pas spécifié dans le custom_endpoint_address, le port 443 est utilisé par défaut.
Chemin d’accès au fichier CA_BUNDLE personnalisé du certificat SSL utilisé pour authentifier l’identité du point de terminaison de connexion. La valeur par défaut est None, auquel cas certifi.where() sera utilisé.
- uamqp_transport
- bool
Indique s’il faut utiliser la bibliothèque uamqp comme transport sous-jacent. La valeur par défaut est False et la bibliothèque PURE PYTHON AMQP sera utilisée comme transport sous-jacent.
- socket_timeout
- float
Durée en secondes pendant laquelle le socket sous-jacent sur la connexion doit attendre lors de l’envoi et de la réception de données avant d’expirer. La valeur par défaut est 0,2 pour TransportType.Amqp et 1 pour TransportType.AmqpOverWebsocket. Si des erreurs EventHubsConnectionError se produisent en raison d’un délai d’écriture, une valeur supérieure à la valeur par défaut peut être transmise. Il s’agit de scénarios d’utilisation avancés et la valeur par défaut doit normalement être suffisante.
Exemples
Créez une instance de 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éthodes
close |
Fermez la connexion et les liens AMQP sous-jacents du client Producteur. |
create_batch |
Créez un objet EventDataBatch dont la taille maximale de tout le contenu est limitée par max_size_in_bytes. La max_size_in_bytes ne doit pas être supérieure à la taille maximale autorisée des messages définie par le service. |
flush |
Mode mis en mémoire tampon uniquement. Vider les événements dans la mémoire tampon à envoyer immédiatement si le client fonctionne en mode mis en mémoire tampon. |
from_connection_string |
Créez un EventHubProducerClient à partir d’un chaîne de connexion. |
get_buffered_event_count |
Nombre d’événements mis en mémoire tampon et en attente de publication pour une partition donnée. Retourne Aucun en mode non mis en mémoire tampon. REMARQUE : La mémoire tampon d’événements est traitée dans un thread d’arrière-plan. Par conséquent, le nombre d’événements dans la mémoire tampon signalés par cette API doit être considéré comme une approximation et n’est recommandé que pour le débogage. Pour un ID de partition pour lequel aucun événement n’est mis en mémoire tampon, 0 est retourné, que cet ID de partition existe réellement dans le hub d’événements. |
get_eventhub_properties |
Obtient les propriétés du hub d’événements. Les clés dans le dictionnaire retourné sont les suivantes :
|
get_partition_ids |
Obtenez les ID de partition de l’Event Hub. |
get_partition_properties |
Obtient les propriétés de la partition spécifiée. Les clés du dictionnaire de propriétés sont les suivantes :
|
send_batch |
Envoie un lot de données d’événement. Par défaut, la méthode se bloque jusqu’à ce que l’accusé de réception soit reçu ou que l’opération expire. Si EventHubProducerClient est configuré pour s’exécuter en mode mis en mémoire tampon, la méthode essaiera de mettre les événements en file d’attente dans la mémoire tampon dans le délai donné si spécifié et retourné. Le producteur effectue l’envoi automatique en arrière-plan en mode mis en mémoire tampon. Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit :
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit :
En mode mis en mémoire tampon, l’envoi d’un lot reste intact et envoyé en une seule unité. Le lot ne sera pas réorganisé. Cela peut entraîner l’inefficacité de l’envoi d’événements. Si vous envoyez une liste finie d’EventData ou d’AmqpAnnotatedMessage et que vous savez qu’elle se trouve dans la limite de taille d’image du hub d’événements, vous pouvez l’envoyer avec un appel send_batch . Sinon, utilisez create_batch pour créer EventDataBatch et ajouter EventData ou AmqpAnnotatedMessage dans le lot un par un jusqu’à la limite de taille, puis appelez cette méthode pour envoyer le lot. |
send_event |
Envoie des données d’événement. Par défaut, la méthode se bloque jusqu’à ce que l’accusé de réception soit reçu ou que l’opération expire. Si EventHubProducerClient est configuré pour s’exécuter en mode mis en mémoire tampon, la méthode essaiera de mettre les événements en file d’attente dans la mémoire tampon dans le délai donné si spécifié et retourné. Le producteur effectue l’envoi automatique en arrière-plan en mode mis en mémoire tampon. Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit : * Si un rappel on_error est passé pendant l’instanciation du client producteur,
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit : * Si les événements ne parviennent pas à se mettre en file d’attente dans le délai d’expiration donné, une erreur est directement générée.
|
close
Fermez la connexion et les liens AMQP sous-jacents du client Producteur.
close(*, flush: bool = True, **kwargs: Any) -> None
Paramètres
- flush
- bool
Mode mis en mémoire tampon uniquement. Si la valeur est True, les événements de la mémoire tampon sont envoyés immédiatement. La valeur par défaut est True.
Mode mis en mémoire tampon uniquement. Délai d’attente pour fermer le producteur. La valeur par défaut est None, ce qui signifie aucun délai d’attente.
Type de retour
Exceptions
Si une erreur s’est produite lors du vidage de la mémoire tampon si le vidage est défini sur True ou lors de la fermeture des connexions AMQP sous-jacentes en mode mis en mémoire tampon.
Exemples
Fermez le client.
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
Créez un objet EventDataBatch dont la taille maximale de tout le contenu est limitée par max_size_in_bytes.
La max_size_in_bytes ne doit pas être supérieure à la taille maximale autorisée des messages définie par le service.
create_batch(**kwargs: Any) -> EventDataBatch
Type de retour
Exceptions
Si une erreur s’est produite lors du vidage de la mémoire tampon si le vidage est défini sur True ou lors de la fermeture des connexions AMQP sous-jacentes en mode mis en mémoire tampon.
Exemples
Créer un objet EventDataBatch de taille limitée
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
Mode mis en mémoire tampon uniquement. Vider les événements dans la mémoire tampon à envoyer immédiatement si le client fonctionne en mode mis en mémoire tampon.
flush(**kwargs: Any) -> None
Paramètres
Délai d’expiration pour vider les événements mis en mémoire tampon, la valeur par défaut est None, ce qui signifie aucun délai d’expiration.
Type de retour
Exceptions
Si le producteur ne parvient pas à vider la mémoire tampon dans le délai d’expiration donné en mode mis en mémoire tampon.
from_connection_string
Créez un EventHubProducerClient à partir d’un chaîne de connexion.
from_connection_string(conn_str: str, *, eventhub_name: str | None = None, buffered_mode: Literal[False] = False, **kwargs: Any) -> EventHubProducerClient
Paramètres
- eventhub_name
- str
Chemin d’accès du hub d’événements spécifique auquel connecter le client.
- buffered_mode
- bool
Si la valeur est True, le client producteur collecte les événements dans une mémoire tampon, effectue un traitement par lot, puis publie. La valeur par défaut est FALSE.
ThreadPoolExecutor à utiliser pour la publication d’événements ou le nombre de workers pour threadPoolExecutor. La valeur par défaut est None et un ThreadPoolExecutor avec le nombre par défaut de workers est créé par https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
Rappel à appeler une fois qu’un lot a été correctement publié. Le rappel prend deux paramètres :
events : liste des événements qui ont été publiés avec succès
partition_id : ID de partition sur lequel les événements de la liste ont été publiés.
La fonction de rappel doit être définie comme suit : on_success(events, partition_id) . Obligatoire lorsque buffered_mode a la valeur True alors que facultatif si buffered_mode a la valeur False.
Rappel à appeler une fois qu’un lot n’a pas pu être publié. Obligatoire lorsque dans buffered_mode a la valeur True alors que facultatif si buffered_mode a la valeur False. La fonction de rappel doit être définie comme suit : on_error(events, partition_id, error), où :
events : liste des événements qui n’ont pas pu être publiés,
partition_id : ID de partition dans lequel les événements de la liste ont été tentés d’être publiés et
error : exception liée à l’échec d’envoi.
Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit :
Si un rappel on_error est passé pendant l’instanciation du client producteur,
ensuite, les informations d’erreur sont passées au rappel on_error , qui sera ensuite appelé.
Si un rappel on_error n’est pas passé pendant l’instanciation du client,
l’erreur est alors déclenchée par défaut.
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit :
Si les événements ne parviennent pas à se mettre en file d’attente dans le délai d’expiration donné, une erreur est directement générée.
Si les événements ne parviennent pas à être envoyés après la mise en file d’attente, le rappel on_error est appelé.
- max_buffer_length
- int
Mode mis en mémoire tampon uniquement. Nombre total d’événements par partition pouvant être mis en mémoire tampon avant qu’un vidage ne soit déclenché. La valeur par défaut est 1 500 en mode mis en mémoire tampon.
Mode mis en mémoire tampon uniquement. Durée d’attente avant la publication d’un lot avec des événements dans la mémoire tampon. La valeur par défaut est 1 en mode mis en mémoire tampon.
- logging_enable
- bool
Indique si les journaux de trace réseau doivent être générés dans l’enregistreur d’événements. La valeur par défaut est False.
- http_proxy
- Dict
Paramètres du proxy HTTP. Il doit s’agir d’un dictionnaire avec les clés suivantes : « proxy_hostname » (valeur str) et « proxy_port » (valeur int). En outre, les clés suivantes peuvent également être présentes : « nom d’utilisateur », « mot de passe ».
- auth_timeout
- float
Délai en secondes d’attente pour qu’un jeton soit autorisé par le service. La valeur par défaut est 60 secondes. Si la valeur est 0, aucun délai d’expiration n’est appliqué à partir du client.
- user_agent
- str
Si elle est spécifiée, elle est ajoutée devant la chaîne de l’agent utilisateur.
- retry_total
- int
Nombre total de tentatives de restauration d’une opération ayant échoué lorsqu’une erreur se produit. La valeur par défaut est 3.
- retry_backoff_factor
- float
Facteur d’interruption à appliquer entre les tentatives après la deuxième tentative (la plupart des erreurs sont résolues immédiatement par un deuxième essai sans délai). En mode fixe, la stratégie de nouvelle tentative est toujours mise en veille pour {facteur d’interruption}. En mode « exponentiel », la stratégie de nouvelle tentative est mise en veille pendant : {facteur d’interruption} * (2 ** ({nombre de nouvelles tentatives totales} - 1)) secondes. Si la backoff_factor est 0.1, la nouvelle tentative est mise en veille pour [0.0s, 0.2s, 0.4s, ...] entre les nouvelles tentatives. La valeur par défaut est 0,8.
- retry_backoff_max
- float
Temps d’arrêt maximal. La valeur par défaut est 120 secondes (2 minutes).
- retry_mode
- str
Comportement de délai entre les tentatives de nouvelle tentative. Les valeurs prises en charge sont « fixes » ou « exponentielles », où la valeur par défaut est « exponentielle ».
- idle_timeout
- float
Délai d’expiration, en secondes, après lequel ce client ferme la connexion sous-jacente en l’absence d’activité. Par défaut, la valeur est None, ce qui signifie que le client ne s’arrêtera pas en raison de l’inactivité, sauf si le service l’a initié.
- transport_type
- TransportType
Type de protocole de transport qui sera utilisé pour communiquer avec le service Event Hubs. La valeur par défaut est TransportType.Amqp , auquel cas le port 5671 est utilisé. Si le port 5671 est indisponible/bloqué dans l’environnement réseau, TransportType.AmqpOverWebsocket peut être utilisé à la place, qui utilise le port 443 pour la communication.
- http_proxy
Paramètres du proxy HTTP. Il doit s’agir d’un dictionnaire avec les clés suivantes : « proxy_hostname » (valeur str) et « proxy_port » (valeur int). En outre, les clés suivantes peuvent également être présentes : « nom d’utilisateur », « mot de passe ».
Adresse de point de terminaison personnalisée à utiliser pour établir une connexion au service Event Hubs, ce qui permet aux demandes réseau d’être routées via toutes les passerelles Application Gateway ou autres chemins nécessaires pour l’environnement hôte. La valeur par défaut est None. Le format est « sb://< custom_endpoint_hostname> :<custom_endpoint_port> ». Si le port n’est pas spécifié dans le custom_endpoint_address, le port 443 est utilisé par défaut.
Chemin d’accès au fichier de CA_BUNDLE personnalisé du certificat SSL utilisé pour authentifier l’identité du point de terminaison de connexion. La valeur par défaut est None, auquel cas certifi.where() sera utilisé.
- uamqp_transport
- bool
Indique s’il faut utiliser la bibliothèque uamqp comme transport sous-jacent. La valeur par défaut est False et la bibliothèque PURE PYTHON AMQP sera utilisée comme transport sous-jacent.
Type de retour
Exceptions
Si une erreur s’est produite lors du vidage de la mémoire tampon si le vidage est défini sur True ou lors de la fermeture des connexions AMQP sous-jacentes en mode mis en mémoire tampon.
Exemples
Créez une instance d’EventHubProducerClient à partir de chaîne de connexion.
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
Nombre d’événements mis en mémoire tampon et en attente de publication pour une partition donnée. Retourne Aucun en mode non mis en mémoire tampon. REMARQUE : La mémoire tampon d’événements est traitée dans un thread d’arrière-plan. Par conséquent, le nombre d’événements dans la mémoire tampon signalés par cette API doit être considéré comme une approximation et n’est recommandé que pour le débogage. Pour un ID de partition pour lequel aucun événement n’est mis en mémoire tampon, 0 est retourné, que cet ID de partition existe réellement dans le hub d’événements.
get_buffered_event_count(partition_id: str) -> int | None
Paramètres
Type de retour
Exceptions
Si une erreur s’est produite lors du vidage de la mémoire tampon si le vidage est défini sur True ou lors de la fermeture des connexions AMQP sous-jacentes en mode mis en mémoire tampon.
get_eventhub_properties
Obtient les propriétés du hub d’événements.
Les clés dans le dictionnaire retourné sont les suivantes :
eventhub_name (str)
created_at (UTC datetime.datetime)
partition_ids (list[str])
get_eventhub_properties() -> Dict[str, Any]
Retours
Dictionnaire contenant les propriétés eventhub.
Type de retour
Exceptions
get_partition_ids
Obtenez les ID de partition de l’Event Hub.
get_partition_ids() -> List[str]
Retours
Liste des ID de partition.
Type de retour
Exceptions
get_partition_properties
Obtient les propriétés de la partition spécifiée.
Les clés du dictionnaire de propriétés sont les suivantes :
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]
Paramètres
Retours
Dictionnaire de propriétés de partition.
Type de retour
Exceptions
send_batch
Envoie un lot de données d’événement. Par défaut, la méthode se bloque jusqu’à ce que l’accusé de réception soit reçu ou que l’opération expire. Si EventHubProducerClient est configuré pour s’exécuter en mode mis en mémoire tampon, la méthode essaiera de mettre les événements en file d’attente dans la mémoire tampon dans le délai donné si spécifié et retourné. Le producteur effectue l’envoi automatique en arrière-plan en mode mis en mémoire tampon.
Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit :
Si un rappel on_error est passé pendant l’instanciation du client producteur,
ensuite, les informations d’erreur sont passées au rappel on_error , qui sera ensuite appelé.
Si un rappel on_error n’est pas passé pendant l’instanciation du client,
l’erreur est alors déclenchée par défaut.
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit :
Si les événements ne parviennent pas à se mettre en file d’attente dans le délai d’expiration donné, une erreur est directement générée.
Si les événements ne parviennent pas à être envoyés après la mise en file d’attente, le rappel on_error est appelé.
En mode mis en mémoire tampon, l’envoi d’un lot reste intact et envoyé en une seule unité. Le lot ne sera pas réorganisé. Cela peut entraîner l’inefficacité de l’envoi d’événements.
Si vous envoyez une liste finie d’EventData ou d’AmqpAnnotatedMessage et que vous savez qu’elle se trouve dans la limite de taille d’image du hub d’événements, vous pouvez l’envoyer avec un appel send_batch . Sinon, utilisez create_batch pour créer EventDataBatch et ajouter EventData ou AmqpAnnotatedMessage dans le lot un par un jusqu’à la limite de taille, puis appelez cette méthode pour envoyer le lot.
send_batch(event_data_batch: EventDataBatch | List[EventData | AmqpAnnotatedMessage], **kwargs: Any) -> None
Paramètres
- event_data_batch
- Union[EventDataBatch, List[Union[EventData, AmqpAnnotatedMessage]]
Objet EventDataBatch à envoyer ou liste d’EventData à envoyer dans un lot. Tous les EventData ou AmqpAnnotatedMessage dans la liste ou EventDataBatch se trouveront sur la même partition.
- timeout
- float
Temps d’attente maximal pour envoyer les données d’événement en mode non mis en mémoire tampon ou temps d’attente maximal pour mettre les données d’événement en file d’attente dans la mémoire tampon en mode mis en mémoire tampon. En mode non mis en mémoire tampon, le temps d’attente par défaut spécifié lors de la création du producteur sera utilisé. En mode mis en mémoire tampon, le temps d’attente par défaut est Aucun.
- partition_id
- str
ID de partition spécifique à envoyer. La valeur par défaut est None, auquel cas le service affecte à toutes les partitions à l’aide du tourniquet (round robin). Un TypeError est déclenché si partition_id est spécifié et event_data_batch est un EventDataBatch , car EventDataBatch lui-même a partition_id.
- partition_key
- str
Avec le partition_key donné, les données d’événement sont envoyées à une partition particulière du hub d’événements décidé par le service. Un TypeError est déclenché si partition_key est spécifié et event_data_batch est un EventDataBatch , car EventDataBatch lui-même a partition_key. Si partition_id et partition_key sont fournis, le partition_id est prioritaire. AVERTISSEMENT : il est déconseillé de définir partition_key de valeur non chaîne sur les événements à envoyer, car le partition_key sera ignoré par le service Event Hub et les événements seront affectés à toutes les partitions à l’aide du tourniquet (round robin). En outre, il existe des KITS de développement logiciel (SDK) pour la consommation d’événements qui s’attendent à ce que partition_key soient uniquement de type chaîne. Ils peuvent ne pas analyser la valeur autre que la chaîne.
Type de retour
Exceptions
Si la valeur spécifiée par le paramètre de délai d’expiration s’écoule avant que l’événement puisse être envoyé en mode non mis en mémoire tampon ou que les événements ne peuvent pas être mis en file d’attente dans la mise en mémoire tampon en mode mis en mémoire tampon.
Exemples
Envoie des données d’événement
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
Envoie des données d’événement. Par défaut, la méthode se bloque jusqu’à ce que l’accusé de réception soit reçu ou que l’opération expire. Si EventHubProducerClient est configuré pour s’exécuter en mode mis en mémoire tampon, la méthode essaiera de mettre les événements en file d’attente dans la mémoire tampon dans le délai donné si spécifié et retourné. Le producteur effectue l’envoi automatique en arrière-plan en mode mis en mémoire tampon.
Si buffered_mode a la valeur False, on_error rappel est facultatif et les erreurs sont gérées comme suit : * Si un rappel on_error est passé pendant l’instanciation du client producteur,
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.
Si buffered_mode a la valeur True, on_error rappel est requis et les erreurs sont gérées comme suit : * Si les événements ne parviennent pas à se mettre en file d’attente dans le délai d’expiration donné, une erreur est directement générée.
* If events fail to send after enqueuing successfully, the *on_error* callback will be called.
send_event(event_data: EventData | AmqpAnnotatedMessage, **kwargs: Any) -> None
Paramètres
- timeout
- float
Temps d’attente maximal pour envoyer les données d’événement en mode non mis en mémoire tampon ou temps d’attente maximal pour mettre les données d’événement en file d’attente dans la mémoire tampon en mode mis en mémoire tampon. En mode non mis en mémoire tampon, le temps d’attente par défaut spécifié lors de la création du producteur sera utilisé. En mode mis en mémoire tampon, le temps d’attente par défaut est Aucun.
- partition_id
- str
ID de partition spécifique à envoyer. La valeur par défaut est None, auquel cas le service affecte à toutes les partitions à l’aide du tourniquet (round robin). Un TypeError est déclenché si partition_id est spécifié et event_data_batch est un EventDataBatch , car EventDataBatch lui-même a partition_id.
- partition_key
- str
Avec le partition_key donné, les données d’événement sont envoyées à une partition particulière du hub d’événements décidé par le service. Un TypeError est déclenché si partition_key est spécifié et event_data_batch est un EventDataBatch , car EventDataBatch lui-même a partition_key. Si partition_id et partition_key sont fournis, le partition_id est prioritaire. AVERTISSEMENT : il est déconseillé de définir partition_key de valeur non chaîne sur les événements à envoyer, car le partition_key sera ignoré par le service Event Hub et les événements seront affectés à toutes les partitions à l’aide du tourniquet (round robin). En outre, il existe des KITS de développement logiciel (SDK) pour la consommation d’événements qui s’attendent à ce que partition_key soient uniquement de type chaîne. Ils peuvent ne pas analyser la valeur autre que la chaîne.
Type de retour
Exceptions
Si la valeur spécifiée par le paramètre de délai d’expiration s’écoule avant que l’événement puisse être envoyé en mode non mis en mémoire tampon ou que les événements peuvent être mis en file d’attente dans la mise en mémoire tampon en mode mis en mémoire tampon.
Attributs
total_buffered_event_count
Nombre total d’événements actuellement mis en mémoire tampon et en attente d’être publiés, sur toutes les partitions. Retourne Aucun en mode non mis en mémoire tampon. REMARQUE : La mémoire tampon d’événements est traitée dans un thread d’arrière-plan. Par conséquent, le nombre d’événements dans la mémoire tampon signalé par cette API ne doit être considéré qu’une approximation et est recommandé uniquement pour le débogage.
Type de retour
Azure SDK for Python