Azure functions 如何告知Azure函数队列触发器不要重试消息

Azure functions 如何告知Azure函数队列触发器不要重试消息,azure-functions,azure-queues,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 } } 我假设HTTP 400错误请求是我们所追求的——因此我正在寻找

我有几个带有队列触发器的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 }
}
我假设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; }
}
公共静态HttpStatusCode运行(字符串消息、ICollector输出、ILogger日志)
{
试一试{
域函数(消息、输出、日志);
返回HttpStatusCode.OK;
}
catch{return HttpStatusCode.BadRequest;}
}

如果我理解正确,您应该在
host.json
中配置您的函数,并将
maxDequeueCount
设置为1。

for服务总线将对您有用(特别是自动完成)。您可以在BrokeredMessage上使用方法,而不是返回HTTP响应(这在Azure函数绑定的上下文中没有意义)。这可能会有所帮助,但请注意答案已过时


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

根据你的描述,我不确定你的意图是什么。也许这是你的解决方案不-这只是对一条特定信息的回应。如果消息无效-请不要重试。法律消息可能中途失败,需要重试。@DavidLapeš,在这种情况下,您将在哪里返回HTTP状态码?你的输出应该是什么?请注意,您只能向HTTP请求返回HTTP响应这是为了向ServiceBus发出信号,表明该消息不受支持,并且应该是死信消息,这将适用于除此特定消息之外的所有情况。然后,在这种特定情况下,不要使该功能失败。只需忽略您不想处理的消息,并返回success。这很有用,但我需要更改所有其他函数中的实现,以控制完成。将其作为入口点或绑定上的属性将非常有用。
public static HttpStatusCode Run(string message, ICollector<string> output, ILogger log)
{
  try {
    DoMyFunction(message, output, log);
    return HttpStatusCode.OK;
  }
  catch { return HttpStatusCode.BadRequest; }
}