我已经环顾四周并进行搜索,但是找不到任何可以解决此问题的方法,因此,如果我的Google Fu无法使我成功,请指向正确的方向。
我们正在使用Azure存储队列来触发执行Azure功能(V2)。 (我不认为这种用法是有意义的,但是为了以防万一,我将其包括在内。)在开发Function的过程中,输入数据的“形状”发生了变化(我正在使用C#POCO对象并进行序列化它们转换为JSON来创建队列消息内容。)
我发现的是,在将代码更改推送到Azure之后,存储队列将继续以旧对象JSON格式将JSON消息发送到功能 -即使提供了JSON存储队列为新格式。
修复非常简单-删除队列,然后让代码重新创建它。但是,这里有很多困惑:
CloudQueueMessage
对象中提供的,因此在幕后可能会发生某种JSON优点。但是... 任何人都能提供/指向我的答案将不胜感激。
答案 0 :(得分:0)
您可能将CloudQueueMessage
对象的消息内容弄错了。
我们通常在代码中处理的是消息内容/文本/正文,其中包含我们要处理的信息。在您的情况下,即C#POCO和序列化的Json有效负载。
当我们在Azure存储队列中创建队列消息时,Azure将填充几个属性。 CloudQueueMessage
对象由消息内容和这些属性组成。它们用于控制队列消息在我们处理其内容时的行为,请检查the doc的用法。
public static long MaxMessageSize { get; }
public static TimeSpan MaxVisibilityTimeout { get; }
public static int MaxNumberOfMessagesToPeek { get; }
public string Id { get; }
public string PopReceipt { get; }
public DateTimeOffset? InsertionTime { get; }
public DateTimeOffset? ExpirationTime { get; }
public DateTimeOffset? NextVisibleTime { get; }
public int DequeueCount { get; }
对于消息内容本身,它可以是字符串或字节数组。当Azure Function收到消息时,我们将several options填充队列消息的方式,前三个仅接收消息内容。