Azure 避免从EventHub并行使用相同的事件
我正在使用:Azure 避免从EventHub并行使用相同的事件,azure,kubernetes,event-handling,azure-eventhub,kubernetes-pod,Azure,Kubernetes,Event Handling,Azure Eventhub,Kubernetes Pod,我正在使用: Azure平台运行一些微服务架构软件解决方案 微服务在特殊情况下使用Azure EventHub进行通信 Kubernetes有2个集群(主要、次要) 每个应用程序名称空间中,每个集群运行一个事件侦听器pod,用于从eventhub消费 最后一点与我目前的问题有关: 负载平衡器将在主集群和辅助集群之间共享流量。这意味着每个应用程序同时运行2个事件侦听器吊舱。因此,他们只是对事件做出反应,但有时他们使用来自事件中心的相同事件,这会导致一些重复的通知邮件 所以最后我的问题是:我如
- Azure平台运行一些微服务架构软件解决方案
- 微服务在特殊情况下使用Azure EventHub进行通信
- Kubernetes有2个集群(主要、次要)
- 每个应用程序名称空间中,每个集群运行一个事件侦听器pod,用于从eventhub消费
最后一点与我目前的问题有关: 负载平衡器将在主集群和辅助集群之间共享流量。这意味着每个应用程序同时运行2个事件侦听器吊舱。因此,他们只是对事件做出反应,但有时他们使用来自事件中心的相同事件,这会导致一些重复的通知邮件
所以最后我的问题是:我如何避免在同一时间阅读同一事件两次?我认为活动中心指数总是在增加,但在同一时刻开始并不“安全”。您将需要在每个pod中使用单独的消费者组来进行调整 也就是说,两个pod都将读取相同的事件,因此您有两个选项
如果您的消息量较低,并且需要有保证的消息处理,那么使用Service Bus可能是一个更好的选择,在这里可以锁定、完成和放弃消息。听起来很合理-谢谢。我想我需要选择第二种方法,看看我需要调整多少服务。也许我可以构建事件+有效负载的散列并存储它们,以便查看已经消耗了什么或没有消耗什么。您认为这会起作用吗?您将拥有分区id和序列号,可以用于整个中心的唯一性。很好的做法是在邮件中设计一个相关id,使其更直观,并在生产者、消费者和集线器之间具有“粘性”,请记住,您最多只需要将标识符无效存储7天(最大事件集线器保留时间),我已经知道这7天了,但也许其他一些人在这一点上是幸运的。所以非常感谢你的快速回答。