c# - Azure 事件中心 - 同一事件中心中的多种事件类型

标签 c# azure events stream azure-eventhub

我已设置Azure 事件中心。有 2 个发布商:

  1. 发布商 1(使用发送策略)

  2. 发布商 2(使用发送策略)

发布商 1 将发送事件 1,发布商 2 将发送事件 2。事件 1 和事件 2 的格式不同。

问题 1:这意味着我们在 EH 中有不同的消息 - 这种方法的权衡是什么?我是否应该创建 2 个 EH(一个用于发布者 1,另一个用于发布者 2)?最佳实践和设计理念是什么?

如果我采用上述方法,我必须设置一个具有监听策略的消费者来查找这些事件并解析/转换这些事件并反序列化它们。

问题 2:我需要 2 个消费者(消费者 1 和消费者 2)来读取发送给他们的消息吗? (消费者 1 将仅读取事件 1,消费者 2 将仅读取事件 2)?

最佳答案

场景 1:一个事件中心适用于多种事件类型

在这种情况下,您在发送和处理消息时有多种选择:

  1. 只需将消息发送到事件中心即可。编写一个读取消息的消费进程,并根据类型对它们进行不同的处理。
  2. 只需将消息发送到事件中心即可。创建不同的消费者组,每个组对应一种消息类型。有两个进程都读取自己的消费者组并跳过它们没有资格处理的消息。 (每个消费者组本质上读取相同的数据,但它们可以位于数据流中的不同位置)。请参阅Azure event hubs and multiple consumer groups
  3. 将消息发送到指定分区。例如,将类型 A 的消息发送到分区 1,将类型 B 的消息发送到分区 2。但这可能会影响事件中心的可扩展性。每个(一组)分区创建专用进程。每个进程将只处理相同类型的消息。请参阅https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-programming-guide#partition-keyhttps://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-programming-guide#create-a-partition-sender

场景 2:每种事件类型一个事件中心

这个很简单,只需创建 2 个事件中心和 2 个消耗进程即可。但您必须管理 2 个事件中心,并且考虑到事件中心的功能,这可能有点过大了。

我的建议

这取决于数据量,但根据我的经验,我会将所有消息发送到一个事件中心,并让一个进程读取消息并使用一些 C# 代码根据消息类型执行操作。

关于c# - Azure 事件中心 - 同一事件中心中的多种事件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354005/

相关文章:

azure - 为什么未使用的段文件没有被删除?

Azure Sentinel RBAC - 最佳实践

javascript - 为什么 jQuery 事件没有被触发?

java - Java 与 C# 中的事件处理

c# - 如何在对数据库进行外部更改后更新/同步 DbContext

c# - 是否可以测试给定表达式是否可以转换为 SQL *而无需*连接到 SQL 数据库?

c# - 单击运算符时如何清除文本框以输入新值?

c# - VSTO-捕获来自 excel 工作簿上任务栏的单击的事件

azure - Microsoft Azure 到嵌入式设备的通信

jquery - 如何使用 jQuery 获取事件坐标?