Azure事件中心 - 同一事件中心中的多个事件类型

时间:2017-09-21 22:21:22

标签: c# azure events stream azure-eventhub

我已经设置了 Azure Event Hub 。有 2个发布者

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

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

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

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

    如果我采用上述方法,我将需要设置一个使用侦听策略的消费者来查找这些事件并解析/转换这些事件并对其进行反序列化。

    问题2 :我是否需要2位消费者(消费者1和消费者2)阅读适合他们的消息? (消费者1只读事件1而消费者2只读事件2)?

1 个答案:

答案 0 :(得分:5)

场景1:多种事件类型的一个事件中心

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

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

    这个很简单,只需创建2个事件中心和2个消耗进程。但是你必须管理2个事件中心,并且考虑到事件中心的能力,它可能有点过分。

    我的建议

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