我正在尝试执行以下任务:
- 如果在过去24小时内未成功执行该操作,则执行该操作存储结果(成功/失败和时间)
- 在15分钟内重复(永远)
理想情况下,我不想使用外部存储(节省成本),因为我需要存储的只是运行之间的字符串。但是,我确实需要保证状态(每次运行返回的字符串)在运行之间保持不变。
我有两个问题:
- Azure耐久函数是否适合此任务?
1.如果没有,我的选择是什么?
1.如果是的话,下面的代码是否可以做到这一点(以“正确”的方式)?
。
[FunctionName("MyOrchestratorFunction")]
public static async Task<string> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context)
{
// Get the state from the context
string state = "some intitial value";
// Perform some action
string result = await context.CallActivityAsync<string>("MyActivityFunction", state);
// Store the result in the state
state = result;
// Wait for 15 minutes
await context.CreateTimer(context.CurrentUtcDateTime.AddMinutes(15), CancellationToken.None);
// Call the orchestrator function again with the updated state
return await context.CallActivityAsync<string>("MyOrchestratorFunction", state);
}
[FunctionName("MyActivityFunction")]
public static string RunActivity(
[ActivityTrigger] string state)
{
// Perform some action using the state
return result;
}
1条答案
按热度按时间tct7dpnv1#
回答哈维关于持久实体的第二个问题:
实体函数Orchestrator Data.cs
协调器
请注意,您的状态属性是正确的可序列化对象。我在使用
string[]
这样的基元数组时遇到了问题。