Frage

Ich sehe ein Problem, wo eine Queue ist jedoch nicht die Zeit, die für die Verbraucher tatsächlich führen Sie die JMS-Nachricht zwischen 100 gesichert - 200 Sekunden von der Schöpfung (wie über das JMSTimestamp-Current gemessen).

Die Strömung war ziemlich niedrig in die Warteschlange, weniger als 30 Meldungen pro Minute. Ich war in der Lage, das Problem zu lösen, indem ActiveMQ Neustart, wonach Nachrichten auf weniger gestartet wurden dann 1ms aus, wenn sie erstellt wurden.

Ich bin mit ActiveMQ 5.4.1 und der normalen Gesamtausführungszeit für die Arbeit in der MDB getan ist weniger als 2 ms. Zum Zeitpunkt der Verzögerung gab es keine Fehlermeldungen im ActiveMQ Protokoll, CPU war niedrig und viel Speicher hatte.

Es scheint, wie die Verbraucher die Nachricht aus der Warteschlange ziehen, aber aus irgendeinem Grunde auf sie sitzen.

Gibt es eine Konfigurationsproblem, die dieses Problem verursachen könnten?

Edit:

Die erste Zeile meines MDB ist wie folgt:

 /* Check the time since this message was created versus processed */
        try {
            long secondsToProcess = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - aMessage.getJMSTimestamp());
            if (secondsToProcess > 5) {
                log.error("JMS Consumer Start Delay: " + secondsToProcess + " s" + " JMS Message took more then 5 seconds to be processed");
            } else {
                log.debug("JMS Consumer Start Delay: " + secondsToProcess + " s");
            }
        } catch (Exception e) {
            log.error(e);
        }
War es hilfreich?

Lösung 2

Wie sich herausstellt, benahm ActiveMQ ganz gut, meine Arbeiter waren zu lange dauert daher die Sicherung der Warteschlange. Der Code in meiner Frage erlaubte mir, das zu sehen.

Andere Tipps

Wie sicher sind Sie, dass die Verbraucher die Nachricht aus der Warteschlange sofort ziehen? ActiveMQ bietet die JMSActiveMQBrokerInTime und JMSActiveMQBrokerOutTime Eigenschaften können Sie verwenden, um dies zu bestätigen (siehe ActiveMQ Nachrichteneigenschaften ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top