2015-06-26 31 views
7

Niedawno zaktualizowałem serwer z ActiveMQ z 5.8 na najnowszy (5.11.1). Od tego czasu zauważyłem sporadycznie, że wiadomości będą gromadzić się w określonej kolejce i nie będą odbierane.ActiveMQ nie odbiera wiadomości z kolejki

Nasza architektura ma jednego producenta, jednego konsumenta. Widzę, że konsument jest nadal podłączony, ale wiadomości gromadzą się od producenta. Moim rozwiązaniem było usunięcie kolejki za pośrednictwem konsoli internetowej. Po czym natychmiast widzę, jak konsument ponownie się łączy i wiadomości są ponownie przetwarzane.

Jeśli jest to istotne, w tym przypadku producent uruchamia system NMS na platformie .NET, a konsument uruchamia system JMS w języku Java 1.7.

+0

Czy to zadziała, jeśli odłączysz/połączysz odbiorcę? Usunięcie dźwięków kolejki jest "poprawką bruteforce". – SubOptimal

+0

@SubOptimal dobre pytanie, właściwie nie jestem pewien na odpowiedź. Nie mam żadnych haczyków do aplikacji, aby odłączyć/ponownie połączyć konsumenta podczas działania aplikacji. Nie wiem też, jak wykryć, że jest w tym utkniętym stanie, ponieważ z jego punktu widzenia wiadomości nie nadchodzą. – Ternary

+1

Jak tylko komunikacja zatrzymała się następnym razem. Możesz zmienić poziom rejestrowania loggera związany z klasą "org.apache.activemq.transport.TransportLogger" na "DEBUG" poprzez interfejs JMX przy użyciu JConsole. Następnie powinieneś zobaczyć komunikat brokera. Może to wyjaśniałoby, co się stanie. – SubOptimal

Odpowiedz

2

Gdy konsument jest połączony z kolejką, sprawdź liczbę niezatwierdzonych wiadomości w kolejce z konsoli internetowej. Jeśli jest więcej niż zero i nie zmienia się przez długi czas, oznacza to, że Twój konsument ma problem z odczytaniem komunikatu wejściowego.

Jeśli powyższy przypadek jest prawdziwy, przyczyną może być fakt, że producent wysyła pliki, które nie są reklamacją JMS.

+0

To jest dobra rzecz do wypróbowania, zrobię to i zgłoś się. Dzięki! – Ternary

+0

Przez "liczbę niezatwierdzonych wiadomości" masz na myśli "Ilość oczekujących wiadomości" w konsoli? Ta wartość, którą znam, jest niezerowa i jeśli kliknę w kolejkę, widzę zawartość wiadomości i przynajmniej ładunek wygląda na prawidłowy i zgodny z tym, co wysyła producent. – Ternary

0

Niedawno wpadłem na ten problem, tworząc narzędzie do przenoszenia wszystkich wiadomości z jednej kolejki do drugiej.

Widziałam, że był podłączony do mojego instancji AMQ i mogłam zobaczyć słuchacza, że ​​miałem utworzony, ale po prostu nie ruszy z W trakcie mojego słuchacza ...

Zapomniałem wywołaj Start() w moim połączeniu kolejkowym. :/