2013-01-11 21 views
6

Chcę wiedzieć, czy istnieje jakiś elegancki sposób, aby kolejki zawsze miały odrębne komunikaty (nic nie dotyczyło okna Wykrywanie duplikatów ani żadnego okresu czasu).Wykrywanie duplikatów w kolejce pamięci masowej Azure

Wiem, że kolejka magistrali usług udostępnia koncepcje sesji (jak wspomniałem, zduplikowane wykrywanie kolejki magistrali usług nie pomoże, ponieważ zależy to od czasu), co może służyć mojemu celowi, ale nie chcę, aby mój komponent był zależność od innej usługi Azure, tylko z powodu tej funkcji.

Dzięki,

+0

Dla odniesienia [Kolejki Azure Service Bus a kolejki Azure Storage] (https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus- kolejki-porównywane-skontrastowane) –

Odpowiedz

10

Nie można wykonać rzetelnie.

Po prostu nie ma mechanizmu, który mógłby wykonać kwerendę w kolejce magazynu i sprawdzić, czy wiadomość o tej samej zawartości już tam jest. Możesz spróbować zaimplementować swoją własną logikę za pomocą pewnej tabeli pamięci, ale to nie będzie wiarygodne - ponieważ wejście do tabeli może się powieść, a następnie wejście do kolejki może się nie udać - a teraz potencjalnie masz złe dane w tabeli.

Twój kod powinien zawsze zakładać, że może pobrać wiadomość zawierającą te same dane, które zostały już przetworzone. Dzieje się tak dlatego, że wiadomości mogą wrócić do kolejki, gdy pracownicy, którzy pracują na nich, ulegają awariom lub trwają zbyt długo.

+4

Rzeczywiście potrzebny jest proces idempotentny –

Powiązane problemy