Azure 使用QueueBackgroundWorkItem进行事件中心发送数据操作是一个好主意吗?

Azure 使用QueueBackgroundWorkItem进行事件中心发送数据操作是一个好主意吗?,azure,async-await,task-parallel-library,azure-eventhub,Azure,Async Await,Task Parallel Library,Azure Eventhub,我有一个WEPAPI,在一秒钟内收到100多个请求,它需要快速回复 每个请求中有两个主要任务: 从缓存中获取答案并将其返回给用户 将结果发送到事件中心(用于某些每小时计算) api调用方对第二部分不感兴趣。因此,任何错误和缓慢、超时都不应改变我的响应时间 我的问题是: 那么应该如何实施呢 我可以使用“HostingEnvironment.QueueBackgroundWorkItem”来处理这种情况吗 背景工作?你有什么建议 使用异步版本的事件中心发送方法是否可以更改任何内容 关于可能实现的

我有一个WEPAPI,在一秒钟内收到100多个请求,它需要快速回复

每个请求中有两个主要任务:

  • 从缓存中获取答案并将其返回给用户
  • 将结果发送到事件中心(用于某些每小时计算)
api调用方对第二部分不感兴趣。因此,任何错误和缓慢、超时都不应改变我的响应时间

我的问题是:

  • 那么应该如何实施呢

  • 我可以使用“HostingEnvironment.QueueBackgroundWorkItem”来处理这种情况吗 背景工作?你有什么建议

  • 使用异步版本的事件中心发送方法是否可以更改任何内容 关于可能实现的可伸缩性和性能


  • 您可以将结果放入队列中,让后台进程以自己的速度读取该队列。这允许您将结果分组并使用批处理将其发送到eventhub。看

    只要读取项目的进程是分离的,将项目放入某种队列应该是非常快速和故障安全的。作为奖励,当web应用程序失败/停止时,事件不会丢失,而是存储在队列中。您可以将
    Azure存储队列
    ()与简单的webjob或
    Azure函数
    ()结合使用来处理事件


    请参阅这篇稍旧的文章,了解有关为什么使用此设置而不是使用
    QueueBackgroundWorkItem
    选项的更多背景信息,以及有关更多阅读材料的回答:。

    谢谢您的回答。实际上我想知道这个想法是否合理?我只想保持我的api稳定,不想因为api调用方不感兴趣的任何错误或超时而变慢。顺便说一句,我已经在使用批处理发送消息。