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
Azure持久实体函数用于获取&;使用计时器触发器设置时间戳信息_Azure_Azure Functions_Azure Durable Functions_Entity Functions - Fatal编程技术网

Azure持久实体函数用于获取&;使用计时器触发器设置时间戳信息

Azure持久实体函数用于获取&;使用计时器触发器设置时间戳信息,azure,azure-functions,azure-durable-functions,entity-functions,Azure,Azure Functions,Azure Durable Functions,Entity Functions,我试图将时间戳信息存储在持久实体中,并在每次触发时检索它。下面是我是怎么做的。我希望当前执行设置的时间戳值可用于下一个触发器。但当控件到达“string prevTS=await context.CallEntityAsync(entityId,“Get”);”时,将再次返回函数的开始。我错过了什么 我希望在计时器触发器之间按顺序执行。 ''' ***公共静态类GetOpenDataRealtimeFeed { [FunctionName(“GetOpenDataOrchestrator”)]

我试图将时间戳信息存储在持久实体中,并在每次触发时检索它。下面是我是怎么做的。我希望当前执行设置的时间戳值可用于下一个触发器。但当控件到达“string prevTS=await context.CallEntityAsync(entityId,“Get”);”时,将再次返回函数的开始。我错过了什么

我希望在计时器触发器之间按顺序执行。 '''

***公共静态类GetOpenDataRealtimeFeed
{
[FunctionName(“GetOpenDataOrchestrator”)]
公共静态异步任务RunOrchestrator(
[OrchestrationTrigger]IDurableOrchestrationContext上下文、活页夹、ILogger日志)
{
变量输出=新列表();
var entityId=新的entityId(名称为(GetPrevLastModifiedTimestamp),“entityKey2”);
string prevTS=wait context.CallEntityAsync(entityId,“Get”);
字符串currentTS=DateTime.Now.ToString();
输出。添加(当前TS);
产出.增加(以前的);
SignalEntity(entityId,“Set”,currentTS);
返回null;
}
//持久实体函数,用于获取和设置上次修改的时间戳
[函数名(“GetPrevLastModifiedTimestamp”)]
公共静态void GetPrevLastModifiedTimestamp([EntityTrigger]IDurableEntityContext ctx)
{
开关(ctx.OperationName.ToLowerInvariant())
{
案例“集合”:
ctx.SetState(ctx.GetInput());
打破
案例“get”:
Return(ctx.GetState());
打破
}
}
[函数名(“getOpenDataRealtimeFeed_触发器”)]
公共静态异步任务运行(
[TimerTrigger(“%triggerTimer%”)TimerInfo myTimer,
[DurableClient]IdurableCorchestrationClient启动器,
ILogger日志)
{
//函数输入来自请求内容。
字符串instanceId=await starter.StartNewAsync(“GetOpenDataOrchestrator”,null);
LogInformation($“启动了ID为“{instanceId}”的业务流程”;
}
}
}*** 

''

我假设您在调试时引用的是当前行。如果是这样的话,这就是问题所在


由于持久性函数在等待持久性客户端调用后重放函数,因此执行不会经过第一轮。只有最终重播将是“顺序”分步执行。

您还可以在IDurableCorchestrationContext界面上使用
context.IsReplaying
属性。此属性将向您显示是否是实际执行与重播,以到达下一个“等待”
 ***public static class GetOpenDataRealtimeFeed
    {
        [FunctionName("GetOpenDataOrchestrator")]
        public static async Task<List<string>> RunOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context, Binder binder, ILogger log)
        {
            var outputs = new List<string>();
            var entityId = new EntityId(nameof(GetPrevLastModifiedTimestamp), "entityKey2");
            string prevTS = await context.CallEntityAsync<string>(entityId, "Get");
            
            string currentTS = DateTime.Now.ToString();
            outputs.Add(currentTS);
            outputs.Add(prevTS);
            context.SignalEntity(entityId, "Set", currentTS);
            return null;

        }

        //Durable entity function to get & set the last modified timestamp
        [FunctionName("GetPrevLastModifiedTimestamp")]
        public static void GetPrevLastModifiedTimestamp([EntityTrigger] IDurableEntityContext ctx)
        {
            switch (ctx.OperationName.ToLowerInvariant())
            {
                case "set":
                    ctx.SetState(ctx.GetInput<string>());
                    break;
                case "get":
                    ctx.Return(ctx.GetState<string>());
                    break;
            }
        }


        [FunctionName("getOpenDataRealtimeFeed_Trigger")]
        public static async Task Run(
            [TimerTrigger("%triggerTimer%")] TimerInfo myTimer,
            [DurableClient] IDurableOrchestrationClient starter,
            ILogger log)
        {
            // Function input comes from the request content.
            string instanceId = await starter.StartNewAsync("GetOpenDataOrchestrator", null);
            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
        }
    }
}***