RabbitMQ używa nieujemnego długiego kodu (63-bitowa liczba całkowita, ponieważ nieujemna tylko wartość ujemna) nazywanego znacznikiem dostarczania w celu zapisania liczby wiadomości wysłanych przez kanał. Co się stanie, jeśli wyślesz (2^63) wiadomości +1 na kanał?Co stanie się, gdy przepełnienie dostawy RabbitMQ zostanie przekroczone?
Odpowiedz
Zgodnie z kalkulacjami z mojej strony, zakładając maximum publish rate of 53,710 messages per second, musiałbyś publikować łącznie 7,06 x 10^13 lat, czyli cztery rzędy wielkości większe niż wiek znanego wszechświata.
Innymi słowy, jeśli założymy, że w jakiś sposób można opublikować 3 wiadomości na cykl procesora, a procesor Intel mógłby przetwarzać 7 000 000 000 wiadomości na sekundę, to zajęłoby to prawie 84 lata.
Dlatego można bezpiecznie wnioskować, że najpierw napotkasz inne problemy. Ale jeśli twój serwer RabbitMQ będzie działał tak długo, zasługujesz na nagrodę.
Ale z całą powagą, jeśli tak się stało, wyobrażam sobie, że to zależy od tego, jak Erlang obsługuje liczby całkowite. This post wskazuje, że Erlangowi zabraknie pamięci - nie do końca rozumiem, jak to się dzieje, ale może cały system wybuchnie? Kto wie. W języku C#, ints po prostu rzucić po overflow.
- 1. Co się stanie, gdy pula połączeń zostanie wyczerpana?
- 2. Co się stanie, gdy pojawi się przepełnienie timestampu (rowversion)?
- 3. Co stanie się z niezatwierdzoną transakcją, gdy połączenie zostanie zamknięte?
- 4. Co się stanie, gdy zostanie przypisany typ zawierający lambdę?
- 5. Co się stanie, gdy jądro delayed_work zostanie zmienione na
- 6. Co się stanie, gdy naruszona zostanie polityka Swinga dotycząca gwintowania?
- 7. Współbieżność Mysql: co się stanie, gdy zostanie wywołany zablokowany stolik?
- 8. Co stanie się, gdy odświeżymy stronę internetową?
- 9. Co się stanie, gdy uruchomię alarm dwukrotnie?
- 10. Co się stanie, gdy wygasa profil udostępniania?
- 11. Co się stanie, gdy wpiszesz nieprawidłowe hasło?
- 12. Co się stanie, gdy mistrz Kubernetes zawiedzie?
- 13. Co się stanie, gdy zadzwonię requestAnimationFrame wielokrotnie
- 14. Co się stanie, gdy moja aktywność zostanie zniszczona, gdy używam IntentService z ResultReceiver
- 15. Co się stanie, jeśli lambda zostanie przeniesiona/zniszczona podczas działania?
- 16. Co się stanie, jeśli segment uzgadniania połączenia TCP zostanie utracony?
- 17. Co się stanie, jeśli niepoprawny adres zostanie uprzednio pobrany?
- 18. Co się stanie, gdy uruchomi się program java?
- 19. Co się stanie, gdy skończy się kolumna z automatycznym inkrementowaniem?
- 20. Co stanie się, gdy użytkownik kliknie zbiór .NET (EXE)?
- 21. Co się stanie, jeśli element basic_waitable_timer zostanie zniszczony, gdy czekają na nim operacje asynchroniczne?
- 22. Unix: Co się stanie, gdy deskryptor pliku odczytu zostanie zamknięty podczas wywoływania select()
- 23. Co się stanie, gdy UIView zostanie dodany do innego UIView dwa razy w IOS?
- 24. Co stanie się, gdy Qt zostanie skompilowany bez funkcji no-angle i -no-opengl?
- 25. Co się stanie, gdy niepodpisany zapis przekroczy granicę strony i zostanie wywołana usterka?
- 26. Połączenie RabbitMQ w stanie blokowania?
- 27. Co się stanie, gdy użytkownik naciśnie przycisk Zatrzymaj w przeglądarce?
- 28. Co się stanie, gdy pliki cookie zostaną wyłączone?
- 29. Co się stanie, gdy ustawimy Xmx i Xms równy rozmiar?
- 30. Co stanie się, gdy konwertujesz podwójne (lub pływające) na ints?
Tak, wiem, że jest mało prawdopodobne, aby wysłać tak wiele wiadomości. Byłem zainteresowany tym, co się stanie, jeśli to zrobisz. Chociaż możemy sobie wyobrazić, co się dzieje, starałem się sprawdzić, czy ktoś już wie, czy może wskazać mi odniesienie. –
Nie "mało prawdopodobne" - niemożliwe, zważywszy na twoją definicję problemu. Ale próbowałem teoretyzować w drugiej części mojej odpowiedzi :) Być może można było ustawić test, w którym wartość całkowita została celowo ustawiona na (MaxValue-1) lub coś, chociaż myślę, że byłaby to ćwiczenia akademickie. – theMayer