你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EventHubClient.SendAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
SendAsync(EventData) |
发送到 EventData EventHub。 发送的 EventData 将位于任意选择的 EventHubs 分区上。 有 3 种方法可以发送到 EventHubs,每种方法都公开为方法 (及其 sendBatch 重载) : i. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>) ii. SendAsync(EventData, String) 或 SendAsync(IEnumerable<EventData>, String) iii. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>) 在以下的情况下,使用此方法发送:) SendAsync(EventData) 操作应具有高可用性和 b) 数据需要在所有分区之间均匀分布;例外为,当分区的子集不可用时 SendAsync(EventData)EventData将 发送到服务网关,后者又会将 EventData 转发到 EventHub 的分区之一。 下面是消息转发算法:i. 通过将数据平均分布到所有分区,将 EventData 转发到 EventHub 分区 (例如:将 EventData 轮询到所有 EventHub 分区) ii. 如果其中一个 EventHub 分区暂时不可用,服务网关将自动检测它,并将消息转发到另一个可用分区 - 使发送操作高度可用。 |
SendAsync(EventDataBatch) |
在 中EventDataBatch发送一批 。EventData |
SendAsync(IEnumerable<EventData>) |
将一批 发送到 EventData EventHub。 发送的 EventData 将位于任意选择的 EventHub 分区上。 这是最推荐的发送到 EventHub 的方式。 有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载,该重载 SendAsync(EventData)用于发送单个 EventData。 如果需要发送一批 EventData,请使用此重载。 在以下情况下,发送一批 EventData的 很有用: i. 高效发送 - 发送一批 EventData 通过以最佳方式使用创建到 EventHub 服务的会话数来最大化总体吞吐量。 ii. 在事务中发送多个 EventData。 为了识别 ACID 属性,网关服务会将批处理中的所有 转发 EventData到单个 EventHub 分区。 |
SendAsync(EventData, String) |
将带有 partitionKey 的 'EventData 发送到 EventHub。 所有 EventData具有 partitionKey 的 都保证位于同一分区上。 此发送模式强调数据相关性,不如正式发布和延迟。 有 3 种方法可以发送到 EventHubs,每种方法都公开为方法 (及其批处理重载) : i. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>) ii. SendAsync(EventData, String) 或 SendAsync(IEnumerable<EventData>, String) iii. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>) 在以下的情况下使用此类型的发送:a) 需要关联基于发送方实例的事件;发送方可以生成 UniqueId 并将其设置为 partitionKey - 接收的消息上可用于关联 b) 客户端想要控制跨分区的数据分布。 多个 PartitionKey 可以映射到一个分区。 EventHubs 服务使用专有哈希算法将 PartitionKey 映射到 PartitionId。 使用这种类型的发送 (使用特定分区发送密钥) 有时可能会导致分区分布不均匀。 |
SendAsync(IEnumerable<EventData>, String) |
将具有相同 partitionKey 的 EventData “批”发送到 EventHub。 保证所有 EventData具有 partitionKey 的 都位于同一分区上。 多个 PartitionKey 的 将映射到一个分区。 有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载 SendAsync(EventData, String),它是同一类型的发送,用于发送单个 EventData。 在以下情况下,发送一批 EventData的 非常有用:i. 高效发送 - 发送一批 EventData 通过使用创建到 EventHubs 服务的会话数以最佳方式最大化总体吞吐量。 ii. 在一个事务中发送多个事件。 这就是为什么批处理中发送的所有事件都需要具有相同的 partitionKey (,以便仅) 发送到一个分区的原因。 |
SendAsync(EventData)
- Source:
- EventHubClient.cs
发送到 EventData EventHub。 发送的 EventData 将位于任意选择的任何 EventHubs 分区上。
有 3 种方法可以发送到 EventHubs,每种方法都作为方法 (公开,以及其 sendBatch 重载) :
i. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>)
ii. SendAsync(EventData, String) 或 SendAsync(IEnumerable<EventData>, String)
iii. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>)
在以下的情况下使用此方法发送:) 操作 SendAsync(EventData) 应高度可用,并且
b) 数据需要在所有分区之间均匀分布;异常为,当分区的子集不可用时
SendAsync(EventData) 将 EventData 发送到服务网关,而服务网关又会将 EventData 转发到 EventHub 的分区之一。 下面是消息转发算法:i. 通过将数据平均分布到所有分区,将 EventData 转发到 EventHub 分区 (例如:将 EventData 轮循机制分配给所有 EventHub 分区)
ii. 如果其中一个 EventHub 分区暂时不可用,服务网关将自动检测它,并将消息转发到另一个可用分区 ,使发送操作高度可用。
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
参数
返回
完成发送操作时完成的任务。
另请参阅
适用于
SendAsync(EventDataBatch)
- Source:
- EventHubClient.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:
- EventHubClient.cs
将一批 EventData 发送到 EventHub。 发送的 EventData 将位于任意选择的任何 EventHub 分区上。 这是发送到 EventHub 的最推荐方式。
有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载 ,该重载 SendAsync(EventData)用于发送单个 EventData。 如果需要发送一批 EventData,请使用此重载。
在以下情况下,发送一批 EventData的 非常有用:
i. 高效发送 - 发送一批 EventData 通过使用创建到 EventHub 服务的会话数以最佳方式最大化总体吞吐量。
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 的一批事件
返回
完成发送操作时完成的任务。
示例
示例代码:
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);
}
另请参阅
适用于
SendAsync(EventData, String)
- Source:
- EventHubClient.cs
将带有 partitionKey 的 'EventData 发送到 EventHub。 保证所有 EventData具有 partitionKey 的 都位于同一分区上。 此发送模式强调与正式发布和延迟相关的数据关联。
有 3 种方法可以发送到 EventHubs,每种方法都作为方法公开 (及其批处理重载) :
i. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>)
ii. SendAsync(EventData, String) 或 SendAsync(IEnumerable<EventData>, String)
iii. SendAsync(EventData) 或 SendAsync(IEnumerable<EventData>)
在以下的情况下使用此类型的发送:a) 需要基于发送方实例关联事件;发送方可以生成 UniqueId 并将其设置为 partitionKey - 在接收的消息上,该分区可用于关联
b) 客户端想要控制跨分区的数据分布。
多个 PartitionKey 可以映射到一个分区。 EventHubs 服务使用专有哈希算法将 PartitionKey 映射到 PartitionId。 使用此类型的发送 (使用特定 partitionKey) 发送有时可能会导致分区分布不均匀。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
参数
- partitionKey
- String
partitionKey 将经过哈希处理,以确定要向其发送 EventData 的 partitionId。 在“已接收”消息中,可以在 上 PartitionKey访问此消息。
返回
在发送操作完成时完成的任务。
另请参阅
适用于
SendAsync(IEnumerable<EventData>, String)
- Source:
- EventHubClient.cs
将具有相同 partitionKey 的 EventData “批”发送到 EventHub。 保证所有 EventData具有 partitionKey 的 都位于同一分区上。 多个 PartitionKey 的 将映射到一个分区。
有 3 种方法可以发送到 EventHubs,若要了解此特定类型的发送,请参阅重载 SendAsync(EventData, String),它是同一类型的发送,用于发送单个 EventData。
在以下情况下,发送一批 EventData的 非常有用:i. 高效发送 - 发送一批 EventData 通过使用创建到 EventHubs 服务的会话数以最佳方式最大化总体吞吐量。
ii. 在一个事务中发送多个事件。 这就是为什么批处理中发送的所有事件都需要具有相同的 partitionKey (,以便仅) 发送到一个分区的原因。
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
参数
- eventDatas
- IEnumerable<EventData>
要发送到 EventHub 的事件批
- partitionKey
- String
partitionKey 将经过哈希处理,以确定要向其发送 EventData 的 partitionId。 在“已接收”消息中,可以在 上 PartitionKey访问此消息。
返回
在发送操作完成时完成的任务。