EventHubProducerClient Klasse
Die EventHubProducerClient-Klasse definiert eine allgemeine Schnittstelle zum Senden von Ereignissen an den Azure Event Hubs-Dienst.
- Vererbung
-
azure.eventhub._client_base.ClientBaseEventHubProducerClient
Konstruktor
EventHubProducerClient(fully_qualified_namespace: str, eventhub_name: str, credential: CredentialTypes, *, buffered_mode: Literal[False] = False, **kwargs: Any)
Parameter
- fully_qualified_namespace
- str
Der vollqualifizierte Hostname für den Event Hubs-Namespace. Dies ist wahrscheinlich ähnlich wie .servicebus.windows.net
- eventhub_name
- str
Der Pfad des spezifischen Event Hubs, mit dem der Client eine Verbindung herstellt.
- credential
- TokenCredential oder AzureSasCredential oder AzureNamedKeyCredential
Das für die Authentifizierung verwendete Anmeldeinformationsobjekt, das eine bestimmte Schnittstelle zum Abrufen von Token implementiert. Sie akzeptiert EventHubSharedKeyCredentialoder von der azure-identity-Bibliothek generierte Anmeldeinformationsobjekte und -Objekte, die die *get_token(self, scopes) -Methode implementieren.
- buffered_mode
- bool
Bei True sammelt der Producerclient Ereignisse in einem Puffer, batchet effizient und veröffentlicht dann. Der Standardwert lautet False.
Der ThreadPoolExecutor, der für die Veröffentlichung von Ereignissen verwendet werden soll, oder die Anzahl der Worker für threadPoolExecutor. Der Standardwert ist Keine, und ein ThreadPoolExecutor mit der Standardanzahl von Workern wird pro Erstellt. https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
Der Rückruf, der aufgerufen werden soll, nachdem ein Batch erfolgreich veröffentlicht wurde. Der Rückruf benötigt zwei Parameter:
ereignisse: Die Liste der Ereignisse, die erfolgreich veröffentlicht wurden
partition_id: Die Partitions-ID, in der die Ereignisse in der Liste veröffentlicht wurden.
Die Rückruffunktion sollte wie folgt definiert werden: on_success(events, partition_id). Dies ist erforderlich, wenn buffered_mode true ist, während optional ist, wenn buffered_mode False ist.
Der Rückruf, der aufgerufen werden soll, wenn ein Batch nicht veröffentlicht werden konnte. Die Rückruffunktion sollte wie folgt definiert werden: on_error(Ereignisse, partition_id, Fehler), wobei:
Ereignisse: Die Liste der Ereignisse, die nicht veröffentlicht werden konnten,
partition_id: Die Partitions-ID, in der die Ereignisse in der Liste veröffentlicht werden sollen, und
error: Die Ausnahme im Zusammenhang mit dem Sendefehler.
Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt:
Wenn während der Instanziierung des Producerclients ein on_error Rückruf übergeben wird,
Dann werden Fehlerinformationen an den on_error Rückruf übergeben, der dann aufgerufen wird.
Wenn während der Clientinstanziierung kein on_error Rückruf übergeben wird,
dann wird der Fehler standardmäßig ausgelöst.
Wenn buffered_mode True ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt:
Wenn Ereignisse innerhalb des angegebenen Timeouts nicht in Warteschlange treten, wird direkt ein Fehler ausgelöst.
Wenn Ereignisse nicht gesendet werden können, nachdem sie sich erfolgreich in die Warteschlange gestellt haben, wird der on_error Rückruf aufgerufen.
- max_buffer_length
- int
Nur gepufferter Modus. Die Gesamtzahl der Ereignisse pro Partition, die gepuffert werden können, bevor eine Leerung ausgelöst wird. Der Standardwert ist 1500 im gepufferten Modus.
Nur gepufferter Modus. Die Zeit, die vor der Veröffentlichung auf das Erstellen eines Batches mit Ereignissen im Puffer gewartet werden muss. Der Standardwert ist 1 im gepufferten Modus.
- logging_enable
- bool
Gibt an, ob Netzwerkablaufverfolgungsprotokolle an die Protokollierung ausgegeben werden sollen. Der Standardwert ist False.
- auth_timeout
- float
Die Zeit in Sekunden, bis ein Token vom Dienst autorisiert wird. Der Standardwert beträgt 60 Sekunden. Wenn auf 0 festgelegt ist, wird kein Timeout vom Client erzwungen.
- user_agent
- str
Falls angegeben, wird dies vor der Benutzer-Agent-Zeichenfolge hinzugefügt.
- retry_total
- int
Die Gesamtanzahl der Wiederholungsversuche eines fehlgeschlagenen Vorgangs, wenn ein Fehler auftritt. Der Standardwert ist 3.
- retry_backoff_factor
- float
Ein Backofffaktor, der zwischen versuchen nach dem zweiten Versuch angewendet werden soll (die meisten Fehler werden sofort durch einen zweiten Versuch ohne Verzögerung behoben). Im festen Modus wird die Wiederholungsrichtlinie immer für {Backoff-Faktor} in den Ruhezustand versetzt. Im "exponentiellen" Modus wird die Wiederholungsrichtlinie für folgendes ruhen: {backoff factor} * (2 ** ({number of total retries} - 1)) seconds. Wenn der backoff_factor 0,1 ist, wird der Wiederholungsversuch für [0.0s, 0.2s, 0.4s, ...] zwischen Wiederholungen ruhen. Der Standardwert ist 0,8.
- retry_backoff_max
- float
Die maximale Backoffzeit. Der Standardwert ist 120 Sekunden (2 Minuten).
- retry_mode
- str
Das Verzögerungsverhalten zwischen Wiederholungsversuchen. Unterstützte Werte sind "fixed" oder "exponential", wobei der Standardwert "exponentiell" ist.
- idle_timeout
- float
Timeout in Sekunden, nach dem dieser Client die zugrunde liegende Verbindung schließt, wenn keine Aktivität vorhanden ist. Standardmäßig ist der Wert None, was bedeutet, dass der Client nicht aufgrund von Inaktivität heruntergefahren wird, es sei denn, der Dienst initiiert.
- transport_type
- TransportType
Der Typ des Transportprotokolls, das für die Kommunikation mit dem Event Hubs-Dienst verwendet wird. Der Standardwert ist TransportType.Amqp , in diesem Fall wird Port 5671 verwendet. Wenn port 5671 in der Netzwerkumgebung nicht verfügbar/blockiert ist, könnte stattdessen TransportType.AmqpOverWebsocket verwendet werden, wobei Port 443 für die Kommunikation verwendet wird.
- http_proxy
- Dict
HTTP-Proxyeinstellungen. Dies muss ein Wörterbuch mit den folgenden Schlüsseln sein: "proxy_hostname" (Str-Wert) und "proxy_port" (int-Wert). Zusätzlich können die folgenden Schlüssel vorhanden sein: "Benutzername", "Kennwort".
Die benutzerdefinierte Endpunktadresse, die zum Herstellen einer Verbindung mit dem Event Hubs-Dienst verwendet werden soll, sodass Netzwerkanforderungen über alle Anwendungsgateways oder andere Pfade weitergeleitet werden können, die für die Hostumgebung erforderlich sind. Der Standardwert ist None. Das Format würde wie "sb://< custom_endpoint_hostname>:<custom_endpoint_port>" aussehen. Wenn port im custom_endpoint_address nicht angegeben ist, wird standardmäßig Port 443 verwendet.
Pfad zur benutzerdefinierten CA_BUNDLE Datei des SSL-Zertifikats, das zum Authentifizieren der Identität des Verbindungsendpunkts verwendet wird. Der Standardwert ist None. In diesem Fall wird certifi.where() verwendet.
- uamqp_transport
- bool
Gibt an, ob die uamqp-Bibliothek als zugrunde liegender Transport verwendet werden soll. Der Standardwert ist False, und die Pure Python AMQP-Bibliothek wird als zugrunde liegender Transport verwendet.
- socket_timeout
- float
Die Zeit in Sekunden, die der zugrunde liegende Socket für die Verbindung beim Senden und Empfangen von Daten warten sollte, bevor ein Timeout erfolgt. Der Standardwert ist 0.2 für TransportType.Amqp und 1 für TransportType.AmqpOverWebsocket. Wenn EventHubsConnectionError-Fehler aufgrund eines Schreibzeitpunkts auftreten, muss möglicherweise ein größer als der Standardwert übergeben werden. Dies ist für erweiterte Verwendungsszenarien vorgesehen, und normalerweise sollte der Standardwert ausreichend sein.
Beispiele
Erstellen Sie eine neue instance des EventHubProducerClients.
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
)
Methoden
close |
Schließen Sie den Producer-Client, dem AMQP-Verbindungen und -Links zugrunde liegen. |
create_batch |
Erstellen Sie ein EventDataBatch-Objekt mit der maximalen Größe aller Inhalte, die durch max_size_in_bytes eingeschränkt werden. Die max_size_in_bytes sollte nicht größer als die vom Dienst definierte maximal zulässige Nachrichtengröße sein. |
flush |
Nur gepufferter Modus. Löscht Ereignisse im Puffer, die sofort gesendet werden sollen, wenn der Client im Gepufferten Modus arbeitet. |
from_connection_string |
Erstellen Sie einen EventHubProducerClient aus einer Verbindungszeichenfolge. |
get_buffered_event_count |
Die Anzahl der Ereignisse, die gepuffert werden und auf die Veröffentlichung für eine bestimmte Partition warten. Gibt keine im nicht gepufferten Modus zurück. HINWEIS: Der Ereignispuffer wird in einem Hintergrundthread verarbeitet. Daher sollte die Anzahl der Ereignisse im Puffer, die von dieser API gemeldet werden, nur als Näherung betrachtet werden und wird nur für die Verwendung beim Debuggen empfohlen. Für eine Partitions-ID ohne gepufferte Ereignisse wird 0 zurückgegeben, unabhängig davon, ob diese Partitions-ID tatsächlich innerhalb des Event Hubs vorhanden ist. |
get_eventhub_properties |
Ruft Die Eigenschaften des Event Hubs ab. Zu den Schlüsseln im zurückgegebenen Wörterbuch gehören:
|
get_partition_ids |
Abrufen von Partitions-IDs des Event Hubs. |
get_partition_properties |
Rufen Sie die Eigenschaften der angegebenen Partition ab. Zu den Schlüsseln im Eigenschaftenwörterbuch gehören:
|
send_batch |
Sendet einen Batch mit Ereignisdaten. Standardmäßig wird die -Methode blockiert, bis die Bestätigung empfangen wird oder das Vorgangstimeout auftritt. Wenn eventHubProducerClient für die Ausführung im gepufferten Modus konfiguriert ist, versucht die Methode, die Ereignisse innerhalb der angegebenen Zeit in den Puffer zu queuieren und zurückzugeben. Der Producer sendet automatisch im Hintergrund im gepufferten Modus. Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt:
Wenn buffered_mode true ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt:
Im gepufferten Modus bleibt das Senden eines Batches intakt und wird als einzelne Einheit gesendet. Der Batch wird nicht neu angeordnet. Dies kann zu Ineffizienz beim Senden von Ereignissen führen. Wenn Sie eine endliche Liste von EventData oder AmqpAnnotatedMessage senden und wissen, dass diese innerhalb der Event Hub-Framegröße liegt, können Sie sie mit einem send_batch-Aufruf senden. Verwenden Sie create_batch andernfalls , um EventDataBatch zu erstellen und entweder EventData oder AmqpAnnotatedMessage dem Batch nacheinander bis zur Größenbeschränkung hinzuzufügen, und rufen Sie dann diese Methode auf, um den Batch zu senden. |
send_event |
Sendet Ereignisdaten. Standardmäßig wird die -Methode blockiert, bis die Bestätigung empfangen wird oder das Vorgangstimeout auftritt. Wenn eventHubProducerClient für die Ausführung im gepufferten Modus konfiguriert ist, versucht die Methode, die Ereignisse innerhalb der angegebenen Zeit in den Puffer zu queuieren und zurückzugeben. Der Producer sendet automatisch im Hintergrund im gepufferten Modus. Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt: * Wenn während der Instanziierung des Producerclients ein on_error Rückruf übergeben wird,
Wenn buffered_mode true ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt: * Wenn Ereignisse nicht innerhalb des angegebenen Timeouts in die Warteschlange eingereissen werden, wird direkt ein Fehler ausgelöst.
|
close
Schließen Sie den Producer-Client, dem AMQP-Verbindungen und -Links zugrunde liegen.
close(*, flush: bool = True, **kwargs: Any) -> None
Parameter
- flush
- bool
Nur gepufferter Modus. Wenn sie auf True festgelegt ist, werden Ereignisse im Puffer sofort gesendet. Der Standardwert lautet "True".
Nur gepufferter Modus. Timeout zum Schließen des Produzenten. Der Standardwert ist None, was kein Timeout bedeutet.
Rückgabetyp
Ausnahmen
Wenn beim Leeren des Puffers ein Fehler aufgetreten ist, wenn flush auf True festgelegt ist, oder beim Schließen der zugrunde liegenden AMQP-Verbindungen im Gepufferten Modus.
Beispiele
Schließen Sie den 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
Erstellen Sie ein EventDataBatch-Objekt mit der maximalen Größe aller Inhalte, die durch max_size_in_bytes eingeschränkt werden.
Die max_size_in_bytes sollte nicht größer als die vom Dienst definierte maximal zulässige Nachrichtengröße sein.
create_batch(**kwargs: Any) -> EventDataBatch
Rückgabetyp
Ausnahmen
Wenn beim Leeren des Puffers ein Fehler aufgetreten ist, wenn flush auf True festgelegt ist, oder beim Schließen der zugrunde liegenden AMQP-Verbindungen im Gepufferten Modus.
Beispiele
Erstellen eines EventDataBatch-Objekts in begrenzter Größ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
Nur gepufferter Modus. Löscht Ereignisse im Puffer, die sofort gesendet werden sollen, wenn der Client im Gepufferten Modus arbeitet.
flush(**kwargs: Any) -> None
Parameter
Timeout zum Leeren der gepufferten Ereignisse. Der Standardwert ist None, was kein Timeout bedeutet.
Rückgabetyp
Ausnahmen
Wenn der Producer den Puffer nicht innerhalb des angegebenen Timeouts im Gepufferten Modus leert.
from_connection_string
Erstellen Sie einen EventHubProducerClient aus einer Verbindungszeichenfolge.
from_connection_string(conn_str: str, *, eventhub_name: str | None = None, buffered_mode: Literal[False] = False, **kwargs: Any) -> EventHubProducerClient
Parameter
- eventhub_name
- str
Der Pfad des spezifischen Event Hubs, mit dem der Client eine Verbindung herstellt.
- buffered_mode
- bool
Bei True sammelt der Producerclient Ereignisse in einem Puffer, batchet effizient und veröffentlicht dann. Der Standardwert lautet False.
Der ThreadPoolExecutor, der für die Veröffentlichung von Ereignissen verwendet werden soll, oder die Anzahl der Worker für threadPoolExecutor. Der Standardwert ist Keine, und ein ThreadPoolExecutor mit der Standardanzahl von Workern wird pro Erstellt. https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
Der Rückruf, der aufgerufen werden soll, nachdem ein Batch erfolgreich veröffentlicht wurde. Der Rückruf benötigt zwei Parameter:
ereignisse: Die Liste der Ereignisse, die erfolgreich veröffentlicht wurden
partition_id: Die Partitions-ID, in der die Ereignisse in der Liste veröffentlicht wurden.
Die Rückruffunktion sollte wie folgt definiert werden: on_success(events, partition_id). Erforderlich, wenn buffered_mode true ist, und optional, wenn buffered_mode False ist.
Der Rückruf, der aufgerufen werden soll, wenn ein Batch nicht veröffentlicht werden konnte. Erforderlich, wenn in buffered_mode true ist, während optional ist , wenn buffered_mode False ist. Die Rückruffunktion sollte wie folgt definiert werden: on_error(Ereignisse, partition_id, Fehler), wobei:
Ereignisse: Die Liste der Ereignisse, die nicht veröffentlicht werden konnten,
partition_id: Die Partitions-ID, in der die Ereignisse in der Liste veröffentlicht werden sollen, und
error: Die Ausnahme im Zusammenhang mit dem Sendefehler.
Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt:
Wenn während der Instanziierung des Producerclients ein on_error Rückruf übergeben wird,
Dann werden Fehlerinformationen an den on_error Rückruf übergeben, der dann aufgerufen wird.
Wenn während der Clientinstanziierung kein on_error Rückruf übergeben wird,
dann wird der Fehler standardmäßig ausgelöst.
Wenn buffered_mode True ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt:
Wenn Ereignisse innerhalb des angegebenen Timeouts nicht in Warteschlange treten, wird direkt ein Fehler ausgelöst.
Wenn Ereignisse nicht gesendet werden können, nachdem sie sich erfolgreich in die Warteschlange gestellt haben, wird der on_error Rückruf aufgerufen.
- max_buffer_length
- int
Nur gepufferter Modus. Die Gesamtzahl der Ereignisse pro Partition, die gepuffert werden können, bevor eine Leerung ausgelöst wird. Der Standardwert ist 1500 im gepufferten Modus.
Nur gepufferter Modus. Die Zeit, die vor der Veröffentlichung auf das Erstellen eines Batches mit Ereignissen im Puffer gewartet werden muss. Der Standardwert ist 1 im gepufferten Modus.
- logging_enable
- bool
Gibt an, ob Netzwerkablaufverfolgungsprotokolle an die Protokollierung ausgegeben werden sollen. Der Standardwert ist False.
- http_proxy
- Dict
HTTP-Proxyeinstellungen. Dies muss ein Wörterbuch mit den folgenden Schlüsseln sein: "proxy_hostname" (Str-Wert) und "proxy_port" (int-Wert). Zusätzlich können die folgenden Schlüssel vorhanden sein: "Benutzername", "Kennwort".
- auth_timeout
- float
Die Zeit in Sekunden, bis ein Token vom Dienst autorisiert wird. Der Standardwert beträgt 60 Sekunden. Wenn auf 0 festgelegt ist, wird kein Timeout vom Client erzwungen.
- user_agent
- str
Falls angegeben, wird dies vor der Benutzer-Agent-Zeichenfolge hinzugefügt.
- retry_total
- int
Die Gesamtanzahl der Wiederholungsversuche eines fehlgeschlagenen Vorgangs, wenn ein Fehler auftritt. Der Standardwert ist 3.
- retry_backoff_factor
- float
Ein Backofffaktor, der zwischen versuchen nach dem zweiten Versuch angewendet werden soll (die meisten Fehler werden sofort durch einen zweiten Versuch ohne Verzögerung behoben). Im festen Modus wird die Wiederholungsrichtlinie immer für {Backoff-Faktor} in den Ruhezustand versetzt. Im "exponentiellen" Modus wird die Wiederholungsrichtlinie für folgendes ruhen: {backoff factor} * (2 ** ({number of total retries} - 1)) seconds. Wenn der backoff_factor 0,1 ist, wird der Wiederholungsversuch für [0.0s, 0.2s, 0.4s, ...] zwischen Wiederholungen ruhen. Der Standardwert ist 0,8.
- retry_backoff_max
- float
Die maximale Backoffzeit. Der Standardwert ist 120 Sekunden (2 Minuten).
- retry_mode
- str
Das Verzögerungsverhalten zwischen Wiederholungsversuchen. Unterstützte Werte sind "fixed" oder "exponential", wobei der Standardwert "exponentiell" ist.
- idle_timeout
- float
Timeout in Sekunden, nach dem dieser Client die zugrunde liegende Verbindung schließt, wenn keine Aktivität vorhanden ist. Standardmäßig ist der Wert None, was bedeutet, dass der Client nicht aufgrund von Inaktivität heruntergefahren wird, es sei denn, der Dienst initiiert.
- transport_type
- TransportType
Der Typ des Transportprotokolls, das für die Kommunikation mit dem Event Hubs-Dienst verwendet wird. Der Standardwert ist TransportType.Amqp , in diesem Fall wird Port 5671 verwendet. Wenn port 5671 in der Netzwerkumgebung nicht verfügbar/blockiert ist, könnte stattdessen TransportType.AmqpOverWebsocket verwendet werden, wobei Port 443 für die Kommunikation verwendet wird.
- http_proxy
HTTP-Proxyeinstellungen. Dies muss ein Wörterbuch mit den folgenden Schlüsseln sein: "proxy_hostname" (Str-Wert) und "proxy_port" (int-Wert). Zusätzlich können die folgenden Schlüssel vorhanden sein: "Benutzername", "Kennwort".
Die benutzerdefinierte Endpunktadresse, die zum Herstellen einer Verbindung mit dem Event Hubs-Dienst verwendet werden soll, sodass Netzwerkanforderungen über alle Anwendungsgateways oder andere Pfade weitergeleitet werden können, die für die Hostumgebung erforderlich sind. Der Standardwert ist None. Das Format würde wie "sb://< custom_endpoint_hostname>:<custom_endpoint_port>" aussehen. Wenn port im custom_endpoint_address nicht angegeben ist, wird standardmäßig Port 443 verwendet.
Pfad zur benutzerdefinierten CA_BUNDLE Datei des SSL-Zertifikats, das zum Authentifizieren der Identität des Verbindungsendpunkts verwendet wird. Der Standardwert ist None. In diesem Fall wird certifi.where() verwendet.
- uamqp_transport
- bool
Gibt an, ob die uamqp-Bibliothek als zugrunde liegender Transport verwendet werden soll. Der Standardwert ist False, und die Pure Python AMQP-Bibliothek wird als zugrunde liegender Transport verwendet.
Rückgabetyp
Ausnahmen
Wenn beim Leeren des Puffers ein Fehler aufgetreten ist, wenn flush auf True festgelegt ist, oder beim Schließen der zugrunde liegenden AMQP-Verbindungen im Gepufferten Modus.
Beispiele
Erstellen Sie eine neue instance des EventHubProducerClient aus Verbindungszeichenfolge.
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
Die Anzahl der Ereignisse, die gepuffert werden und auf die Veröffentlichung für eine bestimmte Partition warten. Gibt keine im nicht gepufferten Modus zurück. HINWEIS: Der Ereignispuffer wird in einem Hintergrundthread verarbeitet. Daher sollte die Anzahl der Ereignisse im Puffer, die von dieser API gemeldet werden, nur als Näherung betrachtet werden und wird nur für die Verwendung beim Debuggen empfohlen. Für eine Partitions-ID ohne gepufferte Ereignisse wird 0 zurückgegeben, unabhängig davon, ob diese Partitions-ID tatsächlich innerhalb des Event Hubs vorhanden ist.
get_buffered_event_count(partition_id: str) -> int | None
Parameter
Rückgabetyp
Ausnahmen
Wenn beim Leeren des Puffers ein Fehler aufgetreten ist, wenn flush auf True festgelegt ist, oder beim Schließen der zugrunde liegenden AMQP-Verbindungen im Gepufferten Modus.
get_eventhub_properties
Ruft Die Eigenschaften des Event Hubs ab.
Zu den Schlüsseln im zurückgegebenen Wörterbuch gehören:
eventhub_name (str)
created_at (UTC datetime.datetime)
partition_ids (list[str])
get_eventhub_properties() -> Dict[str, Any]
Gibt zurück
Ein Wörterbuch, das eventhub-Eigenschaften enthält.
Rückgabetyp
Ausnahmen
get_partition_ids
Abrufen von Partitions-IDs des Event Hubs.
get_partition_ids() -> List[str]
Gibt zurück
Eine Liste von Partitions-IDs.
Rückgabetyp
Ausnahmen
get_partition_properties
Rufen Sie die Eigenschaften der angegebenen Partition ab.
Zu den Schlüsseln im Eigenschaftenwörterbuch gehören:
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]
Parameter
Gibt zurück
Ein Wörterbuch mit Partitionseigenschaften.
Rückgabetyp
Ausnahmen
send_batch
Sendet einen Batch mit Ereignisdaten. Standardmäßig wird die -Methode blockiert, bis die Bestätigung empfangen wird oder das Vorgangstimeout auftritt. Wenn eventHubProducerClient für die Ausführung im gepufferten Modus konfiguriert ist, versucht die Methode, die Ereignisse innerhalb der angegebenen Zeit in den Puffer zu queuieren und zurückzugeben. Der Producer sendet automatisch im Hintergrund im gepufferten Modus.
Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt:
Wenn während der Instanziierung des Producerclients ein on_error Rückruf übergeben wird,
Dann werden Fehlerinformationen an den on_error Rückruf übergeben, der dann aufgerufen wird.
Wenn während der Clientinstanziierung kein on_error Rückruf übergeben wird,
dann wird der Fehler standardmäßig ausgelöst.
Wenn buffered_mode true ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt:
Wenn Ereignisse nicht innerhalb des angegebenen Timeouts in die Warteschlange eingereissen werden, wird direkt ein Fehler ausgelöst.
Wenn Ereignisse nicht gesendet werden können, nachdem sie erfolgreich in die Warteschlange gestellt wurden, wird der on_error Rückruf aufgerufen.
Im gepufferten Modus bleibt das Senden eines Batches intakt und wird als einzelne Einheit gesendet. Der Batch wird nicht neu angeordnet. Dies kann zu Ineffizienz beim Senden von Ereignissen führen.
Wenn Sie eine endliche Liste von EventData oder AmqpAnnotatedMessage senden und wissen, dass diese innerhalb der Event Hub-Framegröße liegt, können Sie sie mit einem send_batch-Aufruf senden. Verwenden Sie create_batch andernfalls , um EventDataBatch zu erstellen und entweder EventData oder AmqpAnnotatedMessage dem Batch nacheinander bis zur Größenbeschränkung hinzuzufügen, und rufen Sie dann diese Methode auf, um den Batch zu senden.
send_batch(event_data_batch: EventDataBatch | List[EventData | AmqpAnnotatedMessage], **kwargs: Any) -> None
Parameter
- event_data_batch
- Union[EventDataBatch, List[Union[EventData, AmqpAnnotatedMessage]]
Das zu sendende EventDataBatch-Objekt oder eine Liste von EventData , die in einem Batch gesendet werden soll. All EventData oder AmqpAnnotatedMessage in der Liste oder EventDataBatch landen auf derselben Partition.
- timeout
- float
Die maximale Wartezeit zum Senden der Ereignisdaten im nicht gepufferten Modus oder die maximale Wartezeit zum Quedieren der Ereignisdaten in den Puffer im Puffermodus. Im nicht gepufferten Modus wird die Standardwartezeit verwendet, die beim Erstellen des Producers angegeben wurde. Im gepufferten Modus ist die Standardwartezeit Keine.
- partition_id
- str
Die spezifische Partitions-ID, an die gesendet werden soll. Der Standardwert ist Keine. In diesem Fall weist der Dienst alle Partitionen mithilfe von Roundrobin zu. Ein TypeError wird ausgelöst, wenn partition_id angegeben ist und event_data_batch ein EventDataBatch ist, da EventDataBatch selbst über partition_id verfügt.
- partition_key
- str
Mit dem angegebenen partition_key werden Ereignisdaten an eine bestimmte Partition des Event Hubs gesendet, die vom Dienst festgelegt wird. Ein TypeError wird ausgelöst, wenn partition_key angegeben ist und event_data_batch ein EventDataBatch ist, da EventDataBatch selbst über partition_key verfügt. Wenn sowohl partition_id als auch partition_key bereitgestellt werden, hat die partition_id Vorrang. WARNUNG: Das Festlegen partition_key des Nicht-Zeichenfolgenwerts für die zu sendenden Ereignisse wird abgeraten, da die partition_key vom Event Hub-Dienst ignoriert wird und Ereignisse mithilfe von Roundrobin allen Partitionen zugewiesen werden. Darüber hinaus gibt es SDKs für die Nutzung von Ereignissen, die davon ausgehen, dass partition_key nur Zeichenfolgentyp sind. Möglicherweise können sie den Nicht-Zeichenfolgenwert nicht analysieren.
Rückgabetyp
Ausnahmen
Wenn der durch den Timeoutparameter angegebene Wert verstrichen ist, bevor das Ereignis im nicht gepufferten Modus gesendet werden kann oder die Ereignisse nicht in den gepufferten Modus eingereiht werden können.
Beispiele
Sendet Ereignisdaten
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
Sendet Ereignisdaten. Standardmäßig wird die -Methode blockiert, bis die Bestätigung empfangen wird oder das Vorgangstimeout auftritt. Wenn eventHubProducerClient für die Ausführung im gepufferten Modus konfiguriert ist, versucht die Methode, die Ereignisse innerhalb der angegebenen Zeit in den Puffer zu queuieren und zurückzugeben. Der Producer sendet automatisch im Hintergrund im gepufferten Modus.
Wenn buffered_mode false ist, ist on_error Rückruf optional, und Fehler werden wie folgt behandelt: * Wenn während der Instanziierung des Producerclients ein on_error Rückruf übergeben wird,
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.
Wenn buffered_mode true ist, ist on_error Rückruf erforderlich, und Fehler werden wie folgt behandelt: * Wenn Ereignisse nicht innerhalb des angegebenen Timeouts in die Warteschlange eingereissen werden, wird direkt ein Fehler ausgelöst.
* If events fail to send after enqueuing successfully, the *on_error* callback will be called.
send_event(event_data: EventData | AmqpAnnotatedMessage, **kwargs: Any) -> None
Parameter
- timeout
- float
Die maximale Wartezeit zum Senden der Ereignisdaten im nicht gepufferten Modus oder die maximale Wartezeit zum Quedieren der Ereignisdaten in den Puffer im gepufferten Modus. Im nicht gepufferten Modus wird die Standardwartezeit verwendet, die bei der Erstellung des Producers angegeben wurde. Im gepufferten Modus ist die Standardwartezeit Keine.
- partition_id
- str
Die spezifische Partitions-ID, an die gesendet werden soll. Der Standardwert ist Keine. In diesem Fall weist der Dienst alle Partitionen mithilfe von Roundrobin zu. Ein TypeError wird ausgelöst, wenn partition_id angegeben ist und event_data_batch ein EventDataBatch ist, da EventDataBatch selbst über partition_id verfügt.
- partition_key
- str
Mit dem angegebenen partition_key werden Ereignisdaten an eine bestimmte Partition des Event Hubs gesendet, die vom Dienst festgelegt wird. Ein TypeError wird ausgelöst, wenn partition_key angegeben ist und event_data_batch ein EventDataBatch ist, da EventDataBatch selbst über partition_key verfügt. Wenn sowohl partition_id als auch partition_key bereitgestellt werden, hat die partition_id Vorrang. WARNUNG: Das Festlegen partition_key des Nicht-Zeichenfolgenwerts für die zu sendenden Ereignisse wird abgeraten, da die partition_key vom Event Hub-Dienst ignoriert wird und Ereignisse mithilfe von Roundrobin allen Partitionen zugewiesen werden. Darüber hinaus gibt es SDKs für die Nutzung von Ereignissen, die davon ausgehen, dass partition_key nur Zeichenfolgentyp sind. Möglicherweise können sie den Nicht-Zeichenfolgenwert nicht analysieren.
Rückgabetyp
Ausnahmen
Wenn der durch den Timeoutparameter angegebene Wert verstrichen ist, bevor das Ereignis im nicht gepufferten Modus gesendet werden kann oder die Ereignisse im gepufferten Modus in die Warteschlange eingereiht werden können.
Attribute
total_buffered_event_count
Die Gesamtzahl der Ereignisse, die derzeit gepuffert werden und auf die Veröffentlichung warten, über alle Partitionen hinweg. Gibt keine im nicht gepufferten Modus zurück. HINWEIS: Der Ereignispuffer wird in einem Hintergrundthread verarbeitet. Daher sollte die Anzahl der Ereignisse im Puffer, die von dieser API gemeldet werden, nur als Näherung betrachtet werden und wird nur für die Verwendung beim Debuggen empfohlen.
Rückgabetyp
Azure SDK for Python