Функция Azure JavaScript выводится в очередь служебной шины

#javascript #azure-functions #azureservicebus #azure-servicebus-queues

#javascript #azure-функции #azureservicebus #azure-servicebus-очереди

Вопрос:

У меня есть очередь служебной шины, в которой установлено обнаружение дубликатов.

Функция запускается через CosmosDB, в которой ей необходимо затем создать сообщение в очереди служебной шины; однако каждая попытка завершается неудачей с ошибкой дублирования сообщения, требующей MessageId.

Существует ли Javascript SDK, к которому функция может получить доступ для создания новой допустимой полезной нагрузки сообщения?

Если нет, то как должна выглядеть полезная нагрузка сообщения?

Комментарии:

1. Как поместить сообщение в очередь служебной шины? Через привязку или SDK?

2. Я пробовал с привязкой, и свойство MessageId, похоже, работает с разделением, но не с обнаружением дубликатов. Я попытался установить значение на что-то динамическое, такое как Date.now()

3. какое именно сообщение об ошибке вы получаете?

Ответ №1:

Когда мы активируем дублирование, служебная шина Windows Azure начнет сохранять историю наших сообщений. Этот период времени может быть настроен в диапазоне от нескольких минут до дней. Если на служебную шину отправляется дублирующее сообщение, служба автоматически игнорирует сообщение.

В нашем случае в большинстве сценариев обнаружение дубликатов работает нормально, но в некоторых это было плохо (особенно с 10-минутным диапазоном). Чтобы обойти это, мы ввели «прерыватель»: введите значение в ваше свойство MessageId служебной шины, как показано ниже

 msg.MessageId = messageId   "_"   DateTime.Now.ToString("u");
  

Если вы просто хотите предотвратить «рассылку спама», вы могли бы рассмотреть возможность установки минимального времени обнаружения дубликатов (20 секунд). (Лично я хотел бы видеть порог всего в 5 секундах).

Допустимые текущие диапазоны от 20 секунд до 7 дней.