【发布时间】:2019-11-09 17:48:43
【问题描述】:
我们有一个 Azure 存储队列,一旦有效负载/消息到达队列,它就会触发一个 azure 函数。队列触发函数调用另一个持久函数来处理消息/有效负载。
这里是代码sn-p:
[FunctionName("QueueTriggerFunction")]
public Task QueueTriggerFunction(
[QueueTrigger("MyQueue", Connection = "MyStorage")]string item,
[OrchestrationClient] DurableOrchestrationClient client,
ILogger log)
=> client.StartNewAsync("Processor", JsonConvert.DeserializeObject<MyObject>(item));
并且持久化函数看起来像下面的代码示例:
[FunctionName("Processor")]
public async Task ConcurrencyProcessorAsync(
[OrchestrationTrigger] DurableOrchestrationContext context,
ILogger log)
{
var myObject= context.GetInput<MyObject>();
if(ObjectProcessor(myObject) == false)
{
throw new Exception("Processor failed");
}
}
如果在 ObjectProcessor 方法失败时引发上述异常,我希望有效负载最终出现在有毒消息队列中,但实际上并没有发生,因为异常不会通过协调器客户端冒泡。关于如何将此异常抛出回调用者函数的任何建议,该函数是队列触发的,以使有效负载出现在毒消息队列中?
【问题讨论】:
标签: azure azure-functions azure-queues azure-durable-functions