MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB jako usługa kolejkowa?

Używam mongodb jako usługi kolejki do wysyłania wiadomości e-mail. Wkrótce będzie działać w następujący sposób:

  1. Kiedy pojawia się nowa wiadomość, przechowuję ją w mongodb.
  2. Zadanie w tle ładuje następnie wiadomość z mongodb za pomocą atomowej operacji findAndModify i ustawia flagę Processing na true, więc nie przetwarza tej samej wiadomości dwa razy (ponieważ moje zadanie w tle uruchamia wiele wątków równolegle).
  3. Po wysłaniu e-maila usuwam dokument z mongodb.
  4. Możesz także zachować liczbę niepowodzeń dla każdej wiadomości i usunąć ją po 3 nieudanych próbach.

Generalnie używam mongodb jako usługi kolejki tylko z jednego powodu:ponieważ muszę wysyłać e-maile zgodnie z określonym harmonogramem (każda wiadomość zawiera informację o godzinie, w której powinna zostać wysłana).

Jeśli nie masz żadnego harmonogramu i musisz natychmiast przetworzyć wiadomość, sugeruję, abyś zajrzał do istniejących usług kolejek, ponieważ prawdopodobnie obsługują one wszystkie przypadki, których możesz nie zobaczyć bez głębszego zrozumienia kolejek wiadomości.

Aktualizacja

Gdy zadanie w tle ulegnie awarii podczas przetwarzania wiadomości, możesz wykonać następujące czynności:

  1. Przenieś tę wiadomość do innej, zbieranie błędów kolejki wiadomości lub...

  2. Zwiększ licznik prób przetwarzania w wiadomości i ponownie nadaj status „Nowy”, aby spróbować ponownie ją przetworzyć. Tylko upewnij się, że zadanie w tle jest idempotentne (może przetwarzać tę samą wiadomość wiele razy i nie uszkadza danych) i transakcyjne (gdy zadanie się nie powiedzie, musisz cofnąć wprowadzone zmiany. Jeśli takie istnieją). Gdy zadanie nie powiedzie się po 5 próbach (wartość konfiguracji) wykonaj #1.

  3. Po naprawieniu błędu w przetwarzaniu wiadomości można było przetworzyć ją ponownie, przypisując status „Nowy” i przechodząc do kolejki wiadomości, lub po prostu usunąć tę wiadomość. Właściwie zależy to od procesów biznesowych.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 sposoby konwersji daty na ciąg znaków w MongoDB

  2. Jak przekonwertować ciąg do ObjectId w natywnym sterowniku nodejs mongodb?

  3. Jak zaktualizować dokument Mongo po wstawieniu?

  4. Prawidłowe ukrywanie danych logowania do bazy danych

  5. MongoDB:wyjątek w initAndListen:20 Próba utworzenia pliku blokady w katalogu tylko do odczytu:/data/db, zakończenie