gpt4 book ai didi

Azure 耐用功能 : JsonSerializationException by passing complex object from trigger to orchestrator

转载 作者:行者123 更新时间:2023-12-03 00:08:26 35 4
gpt4 key购买 nike

我有一个带有 EventHubTrigger 的 azure 函数:

    [FunctionName("TradesDataProcessStarterEh")]
public static async Task TradesDataProcessStarterEh([EventHubTrigger("aeehrobotronapiintegrationdev", Connection = "EventHubConnectionString", ConsumerGroup = "$Default")]
EventData eventData, PartitionContext partitionContext, [OrchestrationClient] DurableOrchestrationClient starter, ILogger log)
{
if (partitionContext.PartitionId != "1")
return;

var orchestrationId = await starter.StartNewAsync("O_ProcessTradesFromEventHub", eventData);

await partitionContext.CheckpointAsync();
}

协调器函数正在接收事件数据:

    [FunctionName("O_ProcessTradesFromEventHub")]
public static async Task ProcessTradesFromEventHub([OrchestrationTrigger] DurableOrchestrationContext context,
ILogger log)
{
if (!context.IsReplaying)
Console.WriteLine("O_ProcessTradesFromEventHub is triggered");

var eventData = context.GetInput<EventData>();

//do stuff...
}

但是通过执行 context.GetInput() 我得到一个异常:

Function 'O_ProcessTradesFromEventHub (Orchestrator)' failed with an error. Reason: Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type Microsoft.Azure.EventHubs.EventData. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Body', line 1, position 81.

最佳答案

我可以想到 3 种可能的解决方案,您可以尝试:

  • 1 - 使用构造函数将 EventData 包装在您自己的类中(可能通过继承?)。
  • 2 - 尝试转换为对象,怀疑这是否有效,但是值得一试,因为这是一个简单的修复。
  • 3 - 构建您自己的 DTO(数据传输对象)以将 EventData 转换为 <your class>然后通过<your class>到编排。

我认为(3)是最干净的解决方案,你可以完全控制你传递的内容,不幸的是它可能是性能最低且最乏味的。

祝你好运!

关于Azure 耐用功能 : JsonSerializationException by passing complex object from trigger to orchestrator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083351/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com