Тема служебной шины Azure. Обработка повторяющихся сообщений в очереди тем - PullRequest
0 голосов
/ 29 августа 2018
  • У нас есть тема Azure с включенным свойством обнаружения повторяющихся сообщений.
  • Из-за вышеуказанной настройки любые сообщения с идентификатором сообщения, аналогичным предыдущему сообщению, в течение определенного промежутка времени игнорируются функцией azure webjob.
  • Однако мы хотели бы изучить и узнать больше информации о сообщениях, которые игнорируются. Есть ли у нас возможность использовать логику для дублирующихся сообщений?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018
  1. Включение обнаружения дубликатов помогает отслеживать управляемый приложением MessageId всех сообщений, отправляемых в очередь или тему в течение указанного временного окна. Если отправляется какое-либо новое сообщение, содержащее MessageId, который уже был зарегистрирован в течение временного окна, сообщение считается принятым (операция отправки успешна), но вновь отправленное сообщение мгновенно игнорируется и удаляется. Никакие другие части сообщения, кроме MessageId, не рассматриваются. (в блоге, указанном в одном из ответов, говорится, что содержание сообщения не может быть дублированным, что является неправильным).

  2. Значение по умолчанию для истории обнаружения дубликатов теперь составляет 30 секунд, значение может находиться в диапазоне от 20 секунд до 7 дней.

Кроме того, вы можете использовать такие инструменты, как Serverless360, здесь у вас будет возможность восстановить идентификатор сообщения.

См. Этот блог для получения более подробной информации

0 голосов
/ 30 августа 2018

Из-за вышеуказанной настройки любые сообщения с идентификатором сообщения, аналогичным предыдущему сообщению, в течение определенного промежутка времени игнорируются функцией azure webjob.

Обнаружение дубликатов служебной шины Azure основано на идентификаторе сообщения за определенный промежуток времени. Дедуплицирует посредник Azure Service Bus, а не веб-задание / функция Azure. Дедуплицированные сообщения никогда не проходят через точку посредника.

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

...