Compartilhar via


EventHubClient.SendAsync Método

Definição

Sobrecargas

SendAsync(EventData)

Enviar EventData para o EventHub. O EventData enviado será enviado em qualquer partição de EventHubs escolhida arbitrariamente.

Há três maneiras de enviar para EventHubs, cada uma exposta como um método (juntamente com sua sobrecarga sendBatch):

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

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

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

Use este método para enviar se:

a) a SendAsync(EventData) operação deve estar altamente disponível e

b) os dados precisam ser distribuídos uniformemente entre todas as partições; exceção, quando um subconjunto de partições está indisponível

SendAsync(EventData) envia o EventData para um Gateway de Serviço, que, por sua vez, encaminhará o EventData para uma das partições do EventHub. Este é o algoritmo de encaminhamento de mensagens:

i. Encaminhe o EventDatas para partições do EventHub, distribuindo igualmente os dados entre todas as partições (por exemplo: Round-robin do EventDatas para todas as partições do EventHub)

ii. Se uma das partições do EventHub ficar indisponível por um momento, o Gateway de Serviço a detectará automaticamente e encaminhará a mensagem para outra partição disponível, tornando a operação de envio altamente disponível.

SendAsync(EventDataBatch)

Envie um lote de EventData em EventDataBatch.

SendAsync(IEnumerable<EventData>)

Envie um lote de EventData para o EventHub. O EventData enviado será enviado em qualquer partição do EventHub escolhida arbitrariamente. Essa é a maneira mais recomendada de enviar para o EventHub.

Há três maneiras de enviar para EventHubs, para entender esse tipo específico de envio, consulte a sobrecarga SendAsync(EventData), que é usada para enviar um único EventData. Use essa sobrecarga se precisar enviar um lote de EventData.

O envio de um lote de EventDataé útil nos seguintes casos:

i. Envio eficiente – o envio de um lote de maximiza a taxa de EventData transferência geral de maneira ideal usando o número de sessões criadas para o serviço do EventHub.

ii. Enviar vários EventDataem uma Transação. Para obter propriedades ACID, o Serviço de Gateway encaminhará todos os EventDatado lote para uma única partição do EventHub.

SendAsync(EventData, String)

Envia um 'EventData com uma partitionKey para o EventHub. Todos com EventDatauma partitionKey têm a garantia de pousar na mesma partição. Esse padrão de envio enfatiza a correlação de dados em relação à disponibilidade geral e à latência.

Há três maneiras de enviar para EventHubs, cada uma exposta como um método (juntamente com sua sobrecarga em lote):

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

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

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

Use esse tipo de envio se:

a) Há a necessidade de correlação de eventos com base na instância do Remetente; O remetente pode gerar um UniqueId e defini-lo como partitionKey - que na mensagem recebida pode ser usada para correlação

b) O cliente deseja assumir o controle da distribuição de dados entre partições.

Várias PartitionKeys podem ser mapeadas para uma partição. O serviço EventHubs usa um algoritmo hash proprietário para mapear PartitionKey para um PartitionId. O uso desse tipo de envio (envio usando uma partitionKey específica) às vezes pode resultar em partições que não são distribuídas uniformemente.
SendAsync(IEnumerable<EventData>, String)

Envie um 'lote de EventData com a mesma partitionKey' para o EventHub. Todos com EventDatauma partitionKey têm a garantia de pousar na mesma partição. Várias PartitionKey serão mapeadas para uma partição.

Há três maneiras de enviar para EventHubs, para entender esse tipo específico de envio, consulte a sobrecarga SendAsync(EventData, String), que é o mesmo tipo de envio e é usada para enviar um único EventData.

O envio de um lote de EventDataé útil nos seguintes casos:

i. Envio eficiente – o envio de um lote de maximiza a taxa de EventData transferência geral de maneira ideal usando o número de sessões criadas para o serviço EventHubs.

ii. Enviando vários eventos em uma transação. Esse é o motivo pelo qual todos os eventos enviados em um lote precisam ter a mesma partitionKey (para que sejam enviados apenas para uma partição).

SendAsync(EventData)

Origem:
EventHubClient.cs

Enviar EventData para o EventHub. O EventData enviado será enviado em qualquer partição de EventHubs escolhida arbitrariamente.

Há três maneiras de enviar para EventHubs, cada uma exposta como um método (juntamente com sua sobrecarga sendBatch):

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

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

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

Use este método para enviar se:

a) a SendAsync(EventData) operação deve estar altamente disponível e

b) os dados precisam ser distribuídos uniformemente entre todas as partições; exceção, quando um subconjunto de partições está indisponível

SendAsync(EventData) envia o EventData para um Gateway de Serviço, que, por sua vez, encaminhará o EventData para uma das partições do EventHub. Este é o algoritmo de encaminhamento de mensagens:

i. Encaminhe o EventDatas para partições do EventHub, distribuindo igualmente os dados entre todas as partições (por exemplo: Round-robin do EventDatas para todas as partições do EventHub)

ii. Se uma das partições do EventHub ficar indisponível por um momento, o Gateway de Serviço a detectará automaticamente e encaminhará a mensagem para outra partição disponível, tornando a operação de envio altamente disponível.

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

Parâmetros

eventData
EventData

o EventData a ser enviado.

Retornos

Uma Tarefa que é concluída quando as operações de envio são concluídas.

Confira também

Aplica-se a

SendAsync(EventDataBatch)

Origem:
EventHubClient.cs

Envie um lote de EventData em 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

Parâmetros

eventDataBatch
EventDataBatch

o lote de eventos a serem enviados para o EventHub

Retornos

Uma Tarefa que é concluída quando a operação de envio é concluída.

Aplica-se a

SendAsync(IEnumerable<EventData>)

Origem:
EventHubClient.cs

Envie um lote de EventData para o EventHub. O EventData enviado será enviado em qualquer partição do EventHub escolhida arbitrariamente. Essa é a maneira mais recomendada de enviar para o EventHub.

Há três maneiras de enviar para EventHubs, para entender esse tipo específico de envio, consulte a sobrecarga SendAsync(EventData), que é usada para enviar um único EventData. Use essa sobrecarga se precisar enviar um lote de EventData.

O envio de um lote de EventDataé útil nos seguintes casos:

i. Envio eficiente – o envio de um lote de maximiza a taxa de EventData transferência geral de maneira ideal usando o número de sessões criadas para o serviço do EventHub.

ii. Enviar vários EventDataem uma Transação. Para obter propriedades ACID, o Serviço de Gateway encaminhará todos os EventDatado lote para uma única partição do EventHub.

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

Parâmetros

eventDatas
IEnumerable<EventData>

Um lote de eventos a serem enviados para o EventHub

Retornos

Uma Tarefa que é concluída quando as operações de envio são concluídas.

Exemplos

Exemplo de código:

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);
}

Confira também

Aplica-se a

SendAsync(EventData, String)

Origem:
EventHubClient.cs

Envia um 'EventData com uma partitionKey para o EventHub. Todos com EventDatauma partitionKey têm a garantia de pousar na mesma partição. Esse padrão de envio enfatiza a correlação de dados em relação à disponibilidade geral e à latência.

Há três maneiras de enviar para EventHubs, cada uma exposta como um método (juntamente com sua sobrecarga em lote):

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

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

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

Use esse tipo de envio se:

a) Há a necessidade de correlação de eventos com base na instância do Remetente; O remetente pode gerar um UniqueId e defini-lo como partitionKey - que na mensagem recebida pode ser usada para correlação

b) O cliente deseja assumir o controle da distribuição de dados entre partições.

Várias PartitionKeys podem ser mapeadas para uma partição. O serviço EventHubs usa um algoritmo hash proprietário para mapear PartitionKey para um PartitionId. O uso desse tipo de envio (envio usando uma partitionKey específica) às vezes pode resultar em partições que não são distribuídas uniformemente.
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

Parâmetros

eventData
EventData

o EventData a ser enviado.

partitionKey
String

a partitionKey será hashed para determinar a partitionId para a qual enviar o EventData. Na mensagem Recebida, isso pode ser acessado em PartitionKey.

Retornos

Uma Tarefa que é concluída quando a operação de envio é concluída.

Confira também

Aplica-se a

SendAsync(IEnumerable<EventData>, String)

Origem:
EventHubClient.cs

Envie um 'lote de EventData com a mesma partitionKey' para o EventHub. Todos com EventDatauma partitionKey têm a garantia de pousar na mesma partição. Várias PartitionKey serão mapeadas para uma partição.

Há três maneiras de enviar para EventHubs, para entender esse tipo específico de envio, consulte a sobrecarga SendAsync(EventData, String), que é o mesmo tipo de envio e é usada para enviar um único EventData.

O envio de um lote de EventDataé útil nos seguintes casos:

i. Envio eficiente – o envio de um lote de maximiza a taxa de EventData transferência geral de maneira ideal usando o número de sessões criadas para o serviço EventHubs.

ii. Enviando vários eventos em uma transação. Esse é o motivo pelo qual todos os eventos enviados em um lote precisam ter a mesma partitionKey (para que sejam enviados apenas para uma partição).

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

Parâmetros

eventDatas
IEnumerable<EventData>

o lote de eventos a serem enviados para o EventHub

partitionKey
String

a partitionKey será hashed para determinar a partitionId para a qual enviar o EventData. Na mensagem Recebida, isso pode ser acessado em PartitionKey.

Retornos

Uma Tarefa que é concluída quando a operação de envio é concluída.

Confira também

Aplica-se a