编程语言
首页 > 编程语言> > c# – Azure Event Hub – 同一事件中心中的多个事件类型

c# – Azure Event Hub – 同一事件中心中的多个事件类型

作者:互联网

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

>发布者1(带发送政策)
>发布者2(带发送政策)

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

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

如果我采用上述方法,我将不得不设置一个带有Listen策略的Consumer来查找这些事件并解析/转换这些事件并对这些事件进行反序列化.

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

解决方法:

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

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

>只需向活动中心发送消息即可.编写一个消费过程来读取消息,并根据类型处理不同的消息.
>只需向活动中心发送消息即可.创建不同的使用者组,每种消息类型一个.有2个进程可以读取自己的使用者组并跳过他们没有资格处理的消息. (每个消费者组基本上读取相同的数据,但它们可以位于数据流中的不同位置).见Azure event hubs and multiple consumer groups
>将消息发送到指定的分区.例如,将类型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

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

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

我的建议

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

标签:c,stream,events,azure,azure-eventhub
来源: https://codeday.me/bug/20190608/1196057.html