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

kha*_*har 4 c# events stream azure azure-eventhub

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

  1. 发布者1(带有发送策略)

  2. Publisher 2(带有发送策略)

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

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

如果我采用上述方法,则必须设置一个带有“ 监听”策略的使用者来查找这些事件,然后解析/转换这些事件并对其进行反序列化。

问题2:我是否需要2个使用者(消费者1和使用者2)来阅读为他们准备的消息?(消费者1将仅读取事件1,而消费者2将仅读取事件2)?

Pet*_*ons 5

方案1:一个事件中心,可处理多种事件

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

  1. 只需将消息发送到事件中心即可。编写一个耗时的过程来读取消息,并根据类型对消息进行不同的处理。
  2. 只需将消息发送到事件中心即可。创建不同的使用者组,每种消息类型一个。有2个进程既读取自己的使用者组,又跳过不符合处理条件的消息。(每个使用者组本质上都读取相同的数据,但是它们可以位于数据流中的不同位置)。查看Azure事件中心和多个使用者组
  3. 将消息发送到指定的分区。例如,将类型A的消息发送到分区1,将类型B的消息发送到分区2。但是,这可能会影响事件中心的可伸缩性。为每个分区集创建专用进程。然后,每个进程将仅处理相同类型的消息。请参阅https://docs.microsoft.com/zh-CN/azure/event-hubs/event-hubs-programming-guide#partition-keyhttps://docs.microsoft.com/zh-CN/azure/event -hubs / event-hubs-programming-guide#create-a-partition-sender

方案2:每个事件类型的事件中心

这很简单,只需创建2个事件中心和2个使用过程。但是您必须管理2个事件中心,并且鉴于事件中心的功能,这可能会显得过大。

我的建议

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