#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 дней.