Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure表存储工作流系统_Azure_Design Patterns_Azure Table Storage - Fatal编程技术网

Azure表存储工作流系统

Azure表存储工作流系统,azure,design-patterns,azure-table-storage,Azure,Design Patterns,Azure Table Storage,我有一个系统,我们需要运行一个简单的工作流。 例如: 1月1日08:15触发对象Z的任务A 触发后,运行一些不重要的代码实现细节 安排对象Z的任务B在1月3日10:25运行,以此类推 工作流本身很简单,但我需要运行500.000多个实例,这是一个棘手的部分 我知道Windows工作流基金会,出于同样的原因,我选择不使用它。 我最初的设计是使用Azure表存储,我非常感谢对设计的一些反馈 该系统将由两个表组成 Table "Jobs" PartitionKey: ObjectId Rowk

我有一个系统,我们需要运行一个简单的工作流。 例如:

1月1日08:15触发对象Z的任务A 触发后,运行一些不重要的代码实现细节 安排对象Z的任务B在1月3日10:25运行,以此类推 工作流本身很简单,但我需要运行500.000多个实例,这是一个棘手的部分

我知道Windows工作流基金会,出于同样的原因,我选择不使用它。

我最初的设计是使用Azure表存储,我非常感谢对设计的一些反馈

该系统将由两个表组成

Table "Jobs"
  PartitionKey: ObjectId
  Rowkey: ProcessOn (UTC Ticks in reverse so that newest are on top)
  Attributes: State (Pending, Processed, Error, Skipped), etc...

Table "Timetable"
  PartitionKey: YYYYMMDD
  Rowkey: YYYYMMDDHHMM_<GUID>
  Attributes: Job_PartitionKey, Job_RowKey
其思想是运行表将包含每个对象的作业的完整历史记录,时间表将包含将来要运行的所有作业的列表

一些假设:

作业永远不会跨越多个对象 每个对象将只有一个挂起的作业 作业非常轻量级,例如将消息发布到队列 系统必须能够执行以下任务:

执行挂起的作业


使用分区查询时间表中的所有记录改用服务总线如何?BrokeredMessage类有一个名为的属性。您可以通过ScheduledQueueTimeUTC属性,然后通过fuggedabouddit,在希望作业运行时进行调度。然后,您可以拥有一个已触发的webjob,该webjob监视服务总线消息队列,并将在作业消息排队时在非常近的位置被触发。我非常喜欢依靠现有的服务来最小化所需的编码

噢,啦啦。这辆公共汽车的特点多奇特啊。我不知道它能做到这一点。这将有效地取代我的时间表!它还将帮助我在一个实体组事务中获得一切:我期待着使用服务总线。谢谢你把我推向那个方向