你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

PartitionSender.SendAsync 方法

定义

重载

SendAsync(EventData)

发送到 EventData 特定的 EventHub 分区。 创建此 PartitionSender 时,已预先确定目标分区。 此发送模式强调与正式发布和延迟相关的数据关联。

有 3 种方法可以发送到 EventHubs,每种方法都作为方法 (公开,以及其 sendBatch 重载) :

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

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

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

在以下的情况下使用此类型的发送:

a. 客户端希望直接控制跨分区的数据分布。 在这种情况下,客户端负责确保每个事件中心分区至少有一个发送方。

b. 用户不能使用分区键将事件定向到特定分区,但需要将数据与分区方案相关联。

SendAsync(EventDataBatch)

在 中EventDataBatch发送一批 EventData

SendAsync(IEnumerable<EventData>)

发送到 EventData 特定的 EventHub 分区。 创建此 PartitionSender 时预先确定目标分区。

有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载 SendAsync(EventData),它是同一类型的发送,用于发送单个 EventData

在以下情况下,发送一批 EventData的 非常有用:

i. 高效发送 - 发送一批 EventData 通过使用创建到 EventHubs 服务的会话数以最佳方式最大化总体吞吐量。

ii. 在事务中发送多个 EventData。 为了实现 ACID 属性,网关服务会将批处理中的所有 转发 EventData到单个 EventHub 分区。

SendAsync(EventData)

Source:
PartitionSender.cs

发送到 EventData 特定的 EventHub 分区。 创建此 PartitionSender 时,已预先确定目标分区。 此发送模式强调与正式发布和延迟相关的数据关联。

有 3 种方法可以发送到 EventHubs,每种方法都作为方法 (公开,以及其 sendBatch 重载) :

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

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

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

在以下的情况下使用此类型的发送:

a. 客户端希望直接控制跨分区的数据分布。 在这种情况下,客户端负责确保每个事件中心分区至少有一个发送方。

b. 用户不能使用分区键将事件定向到特定分区,但需要将数据与分区方案相关联。

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

参数

eventData
EventData

EventData 发送的 。

返回

完成发送操作时完成的任务。

例外

的总大小 EventData 超出了服务设置的预定义限制。 默认值为 256k 字节。

事件中心服务在操作期间遇到问题。

适用于

SendAsync(EventDataBatch)

Source:
PartitionSender.cs

在 中EventDataBatch发送一批 EventData

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

参数

eventDataBatch
EventDataBatch

要发送到 EventHub 的事件批

返回

在发送操作完成时完成的任务。

适用于

SendAsync(IEnumerable<EventData>)

Source:
PartitionSender.cs

发送到 EventData 特定的 EventHub 分区。 创建此 PartitionSender 时预先确定目标分区。

有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载 SendAsync(EventData),它是同一类型的发送,用于发送单个 EventData

在以下情况下,发送一批 EventData的 非常有用:

i. 高效发送 - 发送一批 EventData 通过使用创建到 EventHubs 服务的会话数以最佳方式最大化总体吞吐量。

ii. 在事务中发送多个 EventData。 为了实现 ACID 属性,网关服务会将批处理中的所有 转发 EventData到单个 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

参数

eventDatas
IEnumerable<EventData>

要发送到 EventHub 的事件批

返回

一个任务,在发送操作完成时完成。

例外

的总大小 EventData 超出了服务设置的预定义限制。 默认值为 256k 字节。

事件中心服务在操作期间遇到问题。

示例

示例代码:

EventHubClient client = EventHubClient.Create("__connectionString__");
PartitionSender senderToPartitionOne = client.CreatePartitionSender("1");

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 senderToPartitionOne.SendAsync(events);
    Console.WriteLine("Sent Batch... Size: {0}", events.Count);

}

适用于