EventHubClient.SendAsync Methode

Definition

Überlädt

SendAsync(EventData)

An EventHub senden EventData . Die gesendeten EventData-Daten landen auf jeder willkürlich ausgewählten EventHubs-Partition.

Es gibt drei Möglichkeiten zum Senden an EventHubs, die jeweils als Methode verfügbar gemacht werden (zusammen mit der sendBatch-Überladung):

i. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

ii. SendAsync(EventData, String) oder SendAsync(IEnumerable<EventData>, String)

iii. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

Verwenden Sie diese Methode, um zu senden, wenn:

a) der SendAsync(EventData) Vorgang sollte hochverfügbar sein und

b) die Daten müssen gleichmäßig auf alle Partitionen verteilt werden; Ausnahme: Wenn eine Teilmenge von Partitionen nicht verfügbar ist

SendAsync(EventData) sendet an EventData ein Dienstgateway, das die EventData-Instanz wiederum an eine der EventHub-Partitionen weiterleitet. Hier sehen Sie den Algorithmus für die Nachrichtenweiterleitung:

i. Weiterleiten der EventDatas an EventHub-Partitionen durch gleichmäßige Verteilung der Daten auf alle Partitionen (z. B. Roundrobin der EventDatas auf alle EventHub-Partitionen)

ii. Wenn eine der EventHub-Partitionen für einen Moment nicht verfügbar ist, erkennt das Dienstgateway sie automatisch und leitet die Nachricht an eine andere verfügbare Partition weiter, sodass der Sendevorgang hochverfügbar ist.

SendAsync(EventDataBatch)

Senden Sie einen Batch von EventData in EventDataBatch.

SendAsync(IEnumerable<EventData>)

Senden Sie einen Batch von EventData an EventHub. Die gesendeten EventData-Daten landen auf jeder willkürlich ausgewählten EventHub-Partition. Dies ist die am besten empfohlene Methode zum Senden an EventHub.

Es gibt drei Möglichkeiten, an EventHubs zu senden. Um diesen speziellen Sendetyp zu verstehen, verweisen Sie auf die Überladung SendAsync(EventData), die zum Senden einzelner EventDataverwendet wird. Verwenden Sie diese Überladung, wenn Sie einen Batch von EventDatasenden müssen.

Das Senden eines Batches von EventData's ist in den folgenden Fällen nützlich:

i. Effizientes Senden: Das Senden eines Batches von EventData maximiert den Gesamtdurchsatz, indem die Anzahl der Sitzungen, die für den EventHub-Dienst erstellt wurden, optimal verwendet wird.

ii. Senden sie mehrere EventDatain einer Transaktion. Um ACID-Eigenschaften zu erhalten, leitet der Gatewaydienst alle EventDataim Batch enthaltenen Dateien an eine einzelne EventHub-Partition weiter.

SendAsync(EventData, String)

Sendet ein -EventData mit einem partitionKey an EventHub. Alle EventDatamit einem partitionKey-Element landen garantiert auf derselben Partition. Dieses Sendemuster betont die Datenkorrelation gegenüber allgemeiner Verfügbarkeit und Latenz.

Es gibt drei Möglichkeiten zum Senden an EventHubs, die jeweils als Methode verfügbar gemacht werden (zusammen mit der Batchüberladung):

i. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

ii. SendAsync(EventData, String) oder SendAsync(IEnumerable<EventData>, String)

iii. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

Verwenden Sie diesen Sendetyp, wenn:

a) Es besteht ein Bedarf an Korrelation von Ereignissen basierend auf sender instance; Der Absender kann eine UniqueId generieren und als partitionKey festlegen. Dies kann für die empfangene Nachricht für die Korrelation verwendet werden.

b) Der Client möchte die Kontrolle über die Verteilung von Daten auf Partitionen übernehmen.

Mehrere PartitionSschlüssel können einer Partition zugeordnet werden. Der EventHubs-Dienst verwendet einen proprietären Hashalgorithmus, um den PartitionKey einer PartitionId zuzuordnen. Die Verwendung dieser Art von Send (Senden mit einem bestimmten partitionKey) kann manchmal zu Partitionen führen, die nicht gleichmäßig verteilt sind.
SendAsync(IEnumerable<EventData>, String)

Senden Sie einen "Batch von EventData mit demselben partitionKey" an EventHub. Alle EventDatamit einem partitionKey-Element landen garantiert auf derselben Partition. Mehrere PartitionKeys werden einer Partition zugeordnet.

Es gibt drei Möglichkeiten, an EventHubs zu senden. Um diesen speziellen Sendetyp zu verstehen, verweisen Sie auf die Überladung SendAsync(EventData, String), die denselben Sendetyp darstellt und zum Senden einzelner EventDataverwendet wird.

Das Senden eines Batches von EventData's ist in den folgenden Fällen nützlich:

i. Effizientes Senden: Das Senden eines Batches von EventData maximiert den Gesamtdurchsatz, indem die Anzahl der Sitzungen, die für den EventHubs-Dienst erstellt wurden, optimal verwendet wird.

ii. Senden mehrerer Ereignisse in einer Transaktion. Aus diesem Grund müssen alle ereignisse, die in einem Batch gesendet werden, denselben partitionKey aufweisen (damit sie nur an eine Partition gesendet werden).

SendAsync(EventData)

Quelle:
EventHubClient.cs

An EventHub senden EventData . Die gesendeten EventData-Daten landen auf jeder willkürlich ausgewählten EventHubs-Partition.

Es gibt drei Möglichkeiten zum Senden an EventHubs, die jeweils als Methode verfügbar gemacht werden (zusammen mit der sendBatch-Überladung):

i. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

ii. SendAsync(EventData, String) oder SendAsync(IEnumerable<EventData>, String)

iii. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

Verwenden Sie diese Methode, um zu senden, wenn:

a) der SendAsync(EventData) Vorgang sollte hochverfügbar sein und

b) die Daten müssen gleichmäßig auf alle Partitionen verteilt werden; Ausnahme: Wenn eine Teilmenge von Partitionen nicht verfügbar ist

SendAsync(EventData) sendet an EventData ein Dienstgateway, das die EventData-Instanz wiederum an eine der EventHub-Partitionen weiterleitet. Hier sehen Sie den Algorithmus für die Nachrichtenweiterleitung:

i. Weiterleiten der EventDatas an EventHub-Partitionen durch gleichmäßige Verteilung der Daten auf alle Partitionen (z. B. Roundrobin der EventDatas auf alle EventHub-Partitionen)

ii. Wenn eine der EventHub-Partitionen für einen Moment nicht verfügbar ist, erkennt das Dienstgateway sie automatisch und leitet die Nachricht an eine andere verfügbare Partition weiter, sodass der Sendevorgang hochverfügbar ist.

public System.Threading.Tasks.Task SendAsync (Microsoft.Azure.EventHubs.EventData eventData);
member this.SendAsync : Microsoft.Azure.EventHubs.EventData -> System.Threading.Tasks.Task
Public Function SendAsync (eventData As EventData) As Task

Parameter

eventData
EventData

die EventData gesendet werden soll.

Gibt zurück

Ein Task, der abgeschlossen wird, wenn die Sendevorgänge abgeschlossen sind.

Weitere Informationen

Gilt für:

SendAsync(EventDataBatch)

Quelle:
EventHubClient.cs

Senden Sie einen Batch von EventData in EventDataBatch.

public System.Threading.Tasks.Task SendAsync (Microsoft.Azure.EventHubs.EventDataBatch eventDataBatch);
member this.SendAsync : Microsoft.Azure.EventHubs.EventDataBatch -> System.Threading.Tasks.Task
Public Function SendAsync (eventDataBatch As EventDataBatch) As Task

Parameter

eventDataBatch
EventDataBatch

der Batch von Ereignissen, die an EventHub gesendet werden sollen

Gibt zurück

Ein Task, der abgeschlossen wird, wenn der Sendevorgang abgeschlossen ist.

Gilt für:

SendAsync(IEnumerable<EventData>)

Quelle:
EventHubClient.cs

Senden Sie einen Batch von EventData an EventHub. Die gesendeten EventData-Daten landen auf jeder willkürlich ausgewählten EventHub-Partition. Dies ist die am besten empfohlene Methode zum Senden an EventHub.

Es gibt drei Möglichkeiten, an EventHubs zu senden. Um diesen speziellen Sendetyp zu verstehen, verweisen Sie auf die Überladung SendAsync(EventData), die zum Senden einzelner EventDataverwendet wird. Verwenden Sie diese Überladung, wenn Sie einen Batch von EventDatasenden müssen.

Das Senden eines Batches von EventData's ist in den folgenden Fällen nützlich:

i. Effizientes Senden: Das Senden eines Batches von EventData maximiert den Gesamtdurchsatz, indem die Anzahl der Sitzungen, die für den EventHub-Dienst erstellt wurden, optimal verwendet wird.

ii. Senden sie mehrere EventDatain einer Transaktion. Um ACID-Eigenschaften zu erhalten, leitet der Gatewaydienst alle EventDataim Batch enthaltenen Dateien an eine einzelne EventHub-Partition weiter.

public System.Threading.Tasks.Task SendAsync (System.Collections.Generic.IEnumerable<Microsoft.Azure.EventHubs.EventData> eventDatas);
member this.SendAsync : seq<Microsoft.Azure.EventHubs.EventData> -> System.Threading.Tasks.Task
Public Function SendAsync (eventDatas As IEnumerable(Of EventData)) As Task

Parameter

eventDatas
IEnumerable<EventData>

Ein Batch von Ereignissen, die an EventHub gesendet werden sollen

Gibt zurück

Ein Task, der abgeschlossen wird, wenn die Sendevorgänge abgeschlossen sind.

Beispiele

Beispielcode:

var client = EventHubClient.Create("__connectionString__");
while (true)
{
    var events = new List<EventData>();
    for (int count = 1; count < 11; count++)
    {
        var payload = new PayloadEvent(count);
        byte[] payloadBytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(payload));
        var sendEvent = new EventData(payloadBytes);
        var applicationProperties = new Dictionary<string, string>();
        applicationProperties["from"] = "csharpClient";
        sendEvent.Properties = applicationProperties;
        events.Add(sendEvent);
    }

    await client.SendAsync(events);
    Console.WriteLine("Sent Batch... Size: {0}", events.Count);
}

Weitere Informationen

Gilt für:

SendAsync(EventData, String)

Quelle:
EventHubClient.cs

Sendet ein -EventData mit einem partitionKey an EventHub. Alle EventDatamit einem partitionKey-Element landen garantiert auf derselben Partition. Dieses Sendemuster betont die Datenkorrelation gegenüber allgemeiner Verfügbarkeit und Latenz.

Es gibt drei Möglichkeiten zum Senden an EventHubs, die jeweils als Methode verfügbar gemacht werden (zusammen mit der Batchüberladung):

i. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

ii. SendAsync(EventData, String) oder SendAsync(IEnumerable<EventData>, String)

iii. SendAsync(EventData) oder SendAsync(IEnumerable<EventData>)

Verwenden Sie diesen Sendetyp, wenn:

a) Es besteht ein Bedarf an Korrelation von Ereignissen basierend auf sender instance; Der Absender kann eine UniqueId generieren und als partitionKey festlegen. Dies kann für die empfangene Nachricht für die Korrelation verwendet werden.

b) Der Client möchte die Kontrolle über die Verteilung von Daten auf Partitionen übernehmen.

Mehrere PartitionSschlüssel können einer Partition zugeordnet werden. Der EventHubs-Dienst verwendet einen proprietären Hashalgorithmus, um den PartitionKey einer PartitionId zuzuordnen. Die Verwendung dieser Art von Send (Senden mit einem bestimmten partitionKey) kann manchmal zu Partitionen führen, die nicht gleichmäßig verteilt sind.
public System.Threading.Tasks.Task SendAsync (Microsoft.Azure.EventHubs.EventData eventData, string partitionKey);
member this.SendAsync : Microsoft.Azure.EventHubs.EventData * string -> System.Threading.Tasks.Task
Public Function SendAsync (eventData As EventData, partitionKey As String) As Task

Parameter

eventData
EventData

die EventData gesendet werden soll.

partitionKey
String

der partitionKey wird mit einem Hash versehen, um die partitionId zu bestimmen, an die eventData gesendet werden soll. In der Empfangenen Nachricht kann unter darauf PartitionKeyzugegriffen werden.

Gibt zurück

Ein Task, der abgeschlossen wird, wenn der Sendevorgang abgeschlossen ist.

Weitere Informationen

Gilt für:

SendAsync(IEnumerable<EventData>, String)

Quelle:
EventHubClient.cs

Senden Sie einen "Batch von EventData mit demselben partitionKey" an EventHub. Alle EventDatamit einem partitionKey-Element landen garantiert auf derselben Partition. Mehrere PartitionKeys werden einer Partition zugeordnet.

Es gibt drei Möglichkeiten, an EventHubs zu senden. Um diesen speziellen Sendetyp zu verstehen, verweisen Sie auf die Überladung SendAsync(EventData, String), die denselben Sendetyp darstellt und zum Senden einzelner EventDataverwendet wird.

Das Senden eines Batches von EventData's ist in den folgenden Fällen nützlich:

i. Effizientes Senden: Das Senden eines Batches von EventData maximiert den Gesamtdurchsatz, indem die Anzahl der Sitzungen, die für den EventHubs-Dienst erstellt wurden, optimal verwendet wird.

ii. Senden mehrerer Ereignisse in einer Transaktion. Aus diesem Grund müssen alle ereignisse, die in einem Batch gesendet werden, denselben partitionKey aufweisen (damit sie nur an eine Partition gesendet werden).

public System.Threading.Tasks.Task SendAsync (System.Collections.Generic.IEnumerable<Microsoft.Azure.EventHubs.EventData> eventDatas, string partitionKey);
member this.SendAsync : seq<Microsoft.Azure.EventHubs.EventData> * string -> System.Threading.Tasks.Task
Public Function SendAsync (eventDatas As IEnumerable(Of EventData), partitionKey As String) As Task

Parameter

eventDatas
IEnumerable<EventData>

der Batch von Ereignissen, die an EventHub gesendet werden sollen

partitionKey
String

der partitionKey wird mit einem Hash versehen, um die partitionId zu bestimmen, an die eventData gesendet werden soll. In der Empfangenen Nachricht kann unter darauf PartitionKeyzugegriffen werden.

Gibt zurück

Ein Task, der abgeschlossen wird, wenn der Sendevorgang abgeschlossen ist.

Weitere Informationen

Gilt für: