- У нас есть лазурная тема с включенным свойством обнаружения повторяющихся сообщений.
- Из-за вышеуказанной настройки любые сообщения с идентификатором сообщения, аналогичным предыдущему сообщению, в течение определенного периода времени игнорируются функцией azure webjob.
- Однако мы хотели бы изучить и узнать больше о сообщениях, которые игнорируются. Есть ли у нас возможность запустить логику для повторяющихся сообщений?
Тема служебной шины Azure - обработка повторяющихся сообщений в очереди тем
Ответы (2)
Из-за вышеуказанной настройки любые сообщения с идентификатором сообщения, аналогичным предыдущему сообщению, в течение определенного периода времени игнорируются функцией azure webjob.
Обнаружение дубликатов служебной шины Azure основано на идентификаторе сообщения в течение определенного временного окна. Дедупликацию выполняет брокер служебной шины Azure, а не веб-задание / функция Azure. Дедублированные сообщения никогда не проходят через брокерскую точку.
Если сообщения не дублируются, это явный признак того, что это был дубликат. Если вы этому не доверяете, я предлагаю либо изменить логику потребителя, чтобы реализовать идемпотентность, и перестать полагаться на служебную шину для дедупликации сообщения за вас, либо изменить способ создания идентификаторов сообщений. Идея состоит в том, чтобы создать сообщение Идентификатор основан на полезной нагрузке сообщения.
Включение обнаружения дубликатов помогает отслеживать управляемый приложением MessageId всех сообщений, отправленных в очередь или тему в течение указанного временного окна. Если какое-либо новое сообщение отправляется с идентификатором MessageId, который уже был зарегистрирован в течение временного окна, сообщение считается принятым (операция отправки завершается успешно), но новое отправленное сообщение немедленно игнорируется и отбрасывается. Никакие другие части сообщения, кроме MessageId, не рассматриваются. (в блоге, упомянутом в одном из ответов, говорится, что содержимое сообщения не может быть дублированным, что неверно).
Значение по умолчанию для истории времени обнаружения дубликатов теперь составляет 30 секунд, значение может находиться в диапазоне от 20 секунд до 7 дней.
В качестве альтернативы вы можете использовать такие инструменты, как Serverless360, здесь будет возможность повторно сгенерировать messageid.
Обратитесь к этому блогу, чтобы подробнее