Chciałbym się upewnić, że nie wstawiam wiadomości do kolejki wiele razy. Czy istnieje jakiś identyfikator/nazwisko, którego mogę użyć, aby wymusić wyjątkowość?Niepowtarzalny komunikat kolejki Azure
Odpowiedz
Kolejki Azure nie zapewnia kolejności komunikatów i unikalności komunikatów. Wiadomości będą przetwarzane "co najmniej raz", ale nic nie zapewni, że nie będzie przetwarzane dwa razy, więc nie zapewnia "co najwyżej raz".
Powinieneś przygotować się do otrzymania tej samej wiadomości dwa razy. Możesz umieścić identyfikator w treści wiadomości jako część swoich danych.
vtortola prawie to zakryła, ale chciałem dodać trochę więcej szczegółów, dlaczego jest to co najmniej raz dostarczona.
Podczas czytania elementu kolejki nie jest on usuwany z kolejki; zamiast tego staje się niewidoczny, ale pozostaje w kolejce. Ten okres niewidzialności wynosi domyślnie 30 sekund (maksymalnie 2 godziny). W tym czasie kod, który usunął element z kolejki, ma tyle czasu, aby przetworzyć komendę znajdującą się w wiadomości kolejki i usunąć element kolejki.
Zakładając, że element kolejki został usunięty przed upływem limitu czasu, wszystko jest w porządku. Jednak: po osiągnięciu limitu czasu element kolejki staje się ponownie widoczny, a kod zawierający element kolejki nie może go już usunąć. W takim przypadku ktoś inny może odczytać ten sam komunikat kolejki i ponownie przetworzyć ten komunikat.
Ze względu na fakt komunikat kolejka może timeout i może ponownie pojawić:
- Twój przetwarzanie kolejka musi być idempotent - operacje na kolejce komunikatów musi prowadzić w taki sam wynik (takich jak rendering miniaturka zdjęcia).
- Musisz pomyśleć o korektach limitu czasu. Może się okazać, że polecenia są poprawne, ale przetwarzanie trwa zbyt długo (być może 45-sekundowy kod wyświetlający miniaturki działał bez zarzutu, dopóki ktoś nie załadował obrazu o rozmiarze 25 MP)
- Musisz pomyśleć o wiadomościach zatrutych - tych, które nigdy nie będą przetwarzane poprawnie. Być może powodują one wyrzucenie wyjątku lub mają nieważny warunek, który powoduje, że procesor komunikatu przerwie przetwarzanie, co prowadzi do ponownego pojawienia się komunikatu w kolejce. Istnieje właściwość o nazwie DequeueCount - rozważ oglądanie tej właściwości po przeczytaniu elementu kolejki, a jeśli jest równa, powiedzmy, 3, wciśnij wiadomość do tabeli lub obiektu typu blob i wyślij sobie powiadomienie, aby poświęcić trochę czasu na debugowanie tej wiadomości w trybie offline.
Więcej szczegółów na temat interfejsu REST API niskiego poziomu dla pobierania jest here. Zapewni to lepszy wgląd w obsługę komunikatów kolejki systemu Windows Azure.
- 1. Blokada kolejki usługi Azure blokowania PeekBatch Azure?
- 2. Jak usunąć komunikat z kolejki JMS
- 3. Ograniczanie przetwarzania kolejki pamięci masowej Azure w aplikacji funkcji Azure
- 4. Wywołanie kolejki Azure WebJobs nie wyzwala
- 5. Niepowtarzalny ogranicznik OpenERP
- 6. Niepowtarzalny błąd podczas @runInSeparateProcess
- 7. Czy Webjobs automatycznie odnawia dzierżawy w wiadomościach kolejki Azure?
- 8. Czy można wysyłać komunikaty kolejki Azure do punktu końcowego?
- 9. Dlaczego brakuje domeny kolejki na moim koncie przechowywania w azure?
- 10. Utwórz niepowtarzalny identyfikator urządzeń z systemem iOS?
- 11. znalezienie minimalnej niepowtarzalny numer w tablicy
- 12. Synchronizacja kolejki
- 13. Statystyki magistrali usług Azure/Monitorowanie
- 14. Dlaczego pojawia się komunikat o błędzie, że nie można usunąć kolejki, gdy mój UITableView próbuje załadować?
- 15. Prędkość magistrali usługi Azure
- 16. Azure Service Bus Podmiot Przepustowość
- 17. Jak obsługuje się zamawianie komunikatów FIFO za pomocą kolejki/tematów partycji Azure Service Bus?
- 18. Przeniesienie wiadomości z kolejki martwej litery do kolejki wychodzącej MSMQ
- 19. Limit kolejki WSMQ
- 20. System kolejki komunikatów
- 21. Funkcjonalny typ kolejki
- 22. Tworzenie kolejki przesyłania
- 23. Kolejki priorytetowe w Javie
- 24. Tworzenie kolejki w Scala
- 25. RabbitMQ wstrzymać zużycie kolejki
- 26. Kolejki priorytetowe w C++
- 27. Konserwacja kolejki MassTransit
- 28. równoległe ForEach i kolejki
- 29. Maksymalna długość kolejki scala
- 30. Wada okrągłej kolejki?