Rozwinę trochę odpowiedź na punkt 2, czy można odczytać wiadomość z okresu, kiedy nie było się podłączonym.
Są 2 metody podłączenia się do kolejki: zwykły (bez nazwy) i durable. W trybie zwykłym czytasz tylko to, co w danej chwili się pojawia i tu odpowiedź na Twoje pytanie byłaby: "nie".
Odpowiedź "tak", daje tryb durable (createDurableConnectionConsumer
). W tym trybie serwer przechowuje listę wszystkich stałych odbiorców oraz pamięta, które wiadomości otrzymali, a które należy im jeszcze dostarczyć.
Tryb durable jest częścią specyfikacji java EE, więc każdy serwer powinien to obsługiwać. Każdy serwer może mieć do tego jeszcze swoje rozszerzenia spoza implementacji. Bardzo rozbudowany jest system IBM Message Queue.
Tę wiedzę nabyłem drogą własnych badań. Nie wiem, czy stosuje się to w praktyce. Na pewno w praktyce stosuje się kafkę.