如何告诉Azure Function队列触发器不重试消息

时间:2018-11-15 11:40:59

标签: azure-functions azure-queues

我有几个带有队列触发器的Azure函数。在版本2中

public static void Run(string message, ICollector<string> output, ILogger log) {
  try { DoMyFunction(message, output, log); }
  catch { // HOWTO: Tell Queue Not to Bother Retrying }
}

所有向前的队列都作为输出集合。

Given a Message that is not supported
When then message is processed by my function
Then my function should return a status that ensures the message is not retried

我假设我们要处理的是HTTP 400错误请求-因此,我正在寻找与之等效的

public static HttpStatusCode Run(string message, ICollector<string> output, ILogger log)
{
  try {
    DoMyFunction(message, output, log);
    return HttpStatusCode.OK;
  }
  catch { return HttpStatusCode.BadRequest; }
}

2 个答案:

答案 0 :(得分:1)

用于服务总线的messageHandlerOptions in host.json将对您有用(特别是自动完成)。您可以使用BrokeredMessage上的方法,而不是返回在Azure Functions绑定的上下文中没有意义的HTTP响应。 stackoverflow post可能会有所帮助,尽管请注意答案已经过时。

在查找文档时,您应该查找有关服务总线绑定的信息,而不是“队列存储”或“队列触发器”的信息,因为这些绑定是针对Azure存储队列的。

答案 1 :(得分:0)

如果我理解正确,则应该在host.json中配置功能,并将maxDequeueCount设置为1。