如何处理充满错误消息的EventHub?

时间:2019-01-31 22:04:21

标签: c# error-handling azure-functions azure-eventhub

我正在使用EventHub-> Azure Function-> Azure SqlDatabase。

EventHub具有32个分区,并且最多可扩展20个。在Function App中使用Eventhub的功能是并且将永远是唯一的功能。因此,我相信我可以在需要时获得最大的可用性和吞吐量。

现在,想象一下一个场景,其中我有大量的批处理进入EventHub,但是消息中出现了问题,导致功能无法正常工作,并且数据库最终充满了SQL错误。

那我该如何解决问题呢?

  • 我有一个充满“垃圾箱”的EventHub。
  • 我有一个函数被“疯狂”触发,并浪费金钱尝试处理不良消息。
  • 我有一个数据库抛出数百个异常,消耗了100%的CPU,甚至没有响应sp_who [...]
  • 我正在生长一个PoisonHub。

[我不想消耗所有堆积在EventHub上的消息]

如何开始?

  1. 防止EventHub接收新消息,直到修复发件人为止
  2. 停止功能,这样我就不会使用这些消息
  3. 也许扩展数据库,所以它可以响应,我可能会杀死一些进程。

很好,但是现在我停止了整个结构,这已经很糟糕了,并且EventHub充满了垃圾,这将浪费无用的字节。

我看到的一些“解决方案”:

  • 创建一个新的EventHub,这是一个非常奇怪的“解决方案”;
  • 部署一个空的Azure函数以消耗垃圾并更新Eventhub检查点;
  • 手动更改所有32个分区在存储上的偏移量。
  • 只需修复EvenHub发件人并放手...

嗯,我对这些不满意。有没有更好的方法来解决它?

0 个答案:

没有答案