Ответ 1
Обнаружение дубликатов рассматривает свойство MessageId
брокерского сообщения. Таким образом, если вы установите идентификатор сообщения на то, что должно быть уникальным для каждого сообщения, входящего в обнаружение дубликатов, может его поймать. Насколько мне известно, для обнаружения используется только идентификатор сообщения. Содержимое сообщения НЕ просматривается, поэтому, если у вас есть два отправленных сообщения, которые имеют одинаковый фактический контент, но имеют разные идентификаторы сообщений, они не будут обнаружены как дубликаты.
Литература:
Документация MSDN: http://msdn.microsoft.com/en-us/library/windowsazure/hh367516.aspx
Если сценарий не может переносить дублирующую обработку, то дополнительные логики требуется в приложении для обнаружения дубликатов, которые могут быть достигнутый на основе свойства MessageId сообщения, которое будет остаются постоянными при попытках доставки. Это называется точно После обработки.
В WindowsAzure.com также есть пример кода обнаружения дублирования сообщений на WindowsAzure.com, который должен быть именно тем, что вы ищете, насколько это возможно из.
Я также быстро протестировал это и отправил в 5 сообщений в очередь с RequiresDuplicateDetection
установленным значением true, все с тем же содержимым, но с другим MessageIds
. Затем я получил все пять сообщений. Затем я сделал обратное, где у меня было сопоставление MessageIds
, но разные полезные нагрузки, и было восстановлено только одно сообщение.