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

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

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

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

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


person webish    schedule 05.03.2019    source источник
comment
Как поместить сообщение в очередь служебной шины? Через привязку или SDK?   -  person Farrukh Normuradov    schedule 06.03.2019
comment
Я пробовал использовать привязку, и свойство messageId, похоже, работает с разделением, но не с обнаружением дубликатов. Я пробовал установить значение чего-то динамического, например Date.now ()   -  person webish    schedule 06.03.2019
comment
какое точное сообщение об ошибке вы получаете?   -  person yen    schedule 06.03.2019


Ответы (1)


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

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

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

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

В настоящее время допустимый диапазон составляет от 20 секунд до 7 дней.

person Mohit Verma    schedule 30.04.2019