Как указать триггеру очереди функций Azure не повторять сообщение - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть несколько функций 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 Bad Request - это то, что мы ищем - поэтому я ищу эквивалент

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 голосов
/ 17 ноября 2018

Вам будут полезны messageHandlerOptions в host.json для служебной шины (в частности, автозаполнение). Вместо возврата HTTP-ответа, который не имеет смысла в контексте привязок функций Azure, вы можете использовать методы BrokeredMessage. Это сообщение stackoverflow может быть полезным, хотя обратите внимание, что ответ устарел.

При поиске документации этого не следует искать информацию о привязке служебной шины, а не о «хранилище очереди» или «триггере очереди», поскольку эти привязки предназначены для очередей хранилища Azure.

0 голосов
/ 15 ноября 2018

Если я правильно понимаю, вы должны настроить свою функцию в host.json и установить maxDequeueCount в 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...