将数据传递到队列的通用对象

时间:2016-05-17 05:12:47

标签: c# azure azure-webjobs azure-queues

我需要创建一个WebJob来处理一些非超时间敏感的工作。我同时使用DocumentDb和Azure表存储,因此我处理需要由某些后端进程处理的非规范化数据以保持一致。

我对这个WebJob有多种用途,所以我试图找出将数据传递给它的最佳方法。

向WebJob发送请求的正确方法是什么?

  1. 创建一个通用对象,其属性可以在请求进入队列时存储数据。换句话说,我用于通过队列传输数据的某种类型的容器。
  2. 将数据保留在某个后端数据库中,并通过队列发送一个简单的命令?
  3. 我能想到的一个例子是我有一个包含15个实体的列表,我需要在Azure表存储中更新。这可能需要多次读/写操作,这需要时间。

    如果我使用方法#1,我将“打包”一个对象中的15个实体的列表并将其放入队列中的消息中。根据具体情况,有些消息可能会让我感到有点胖。

    如果我使用方法#2,我会将某些实体的ID保存在某个表(SQL或Azure表存储)中,并通过消息发送某种类型的批处理ID。然后我的WebJob将收到批处理ID,首先检索实体并处理它们。虽然这种做法看起来更好,但我担心,这会很慢。

    请记住,此特定WebJob的主要用途是在需要多个后端操作的情况下加快最终用户的响应时间。我正在尝试在WebJob中处理它们,以便立即处理时间敏感,而WebJob可以处理其他“不那么时间敏感”的操作。

    我希望我的解决方案能够非常强大且尽可能快 - 虽然工作时间不是很高,但我仍然希望快速处理后端工作。

0 个答案:

没有答案