You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET控制台应用中筛选Event Hub中的指定ID数据?

如何在.NET控制台应用中仅接收Event Hub中ID为123的消息

可以实现,但Event Hub本身不支持服务端直接过滤消息,需要在客户端接收后做过滤处理。

实现步骤

  • 先将接收到的字节消息反序列化为对应实体对象
  • 增加过滤逻辑,仅处理id为"123"的消息

完整示例代码

首先定义与消息结构匹配的实体类:

using System.Text.Json.Serialization;

public class EventMessage
{
    [JsonPropertyName("id")]
    public string Id { get; set; }
    
    [JsonPropertyName("password")]
    public string Password { get; set; }
}

然后修改消费代码,加入反序列化与过滤逻辑:

using System.Text.Json;

await foreach (PartitionEvent partitionEvent in consumer.ReadEventsFromPartitionAsync(firstPartition, startingPosition, cancellationSource.Token))
{
    byte[] eventBodyBytes = partitionEvent.Data.EventBody.ToArray();
    // 反序列化字节数组为实体对象
    var eventMessage = JsonSerializer.Deserialize<EventMessage>(eventBodyBytes);
    
    // 仅处理id为123的消息
    if (eventMessage?.Id == "123")
    {
        // 这里写你对目标消息的处理逻辑
        Console.WriteLine($"获取到目标消息:Id={eventMessage.Id}, Password={eventMessage.Password}");
    }
}

额外说明

  • 如果消息量极大,客户端过滤会占用较多本地资源。这种场景下可以考虑发送消息时按ID分区,或者用Azure Stream Analytics提前过滤后转发到新的Event Hub,不过这属于额外架构设计。
  • 实体类的JsonPropertyName特性要和JSON消息里的字段名严格对应,避免反序列化失败。

内容的提问来源于stack exchange,提问作者Alan Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:05:02