Question

Je vois un problème où une file d'attente n'est pas sauvegardé mais le temps pour le consommateur d'exécuter effectivement le message JMS est entre 100 - 200 secondes de la création (telle que mesurée par le JMSTimestamp-CurrentTime).

Le débit était assez faible à la file d'attente, à moins de 30 messages par minute. J'ai pu résoudre le problème en redémarrant ActiveMQ, après quoi les messages démarraient avec moins de 1ms puis du moment où ils ont été créés.

J'utilise ActiveMQ et le temps 5.4.1 d'exécution normale totale pour le travail accompli dans le MDB est à moins de 2 ms. Au moment du retard, il n'y avait pas de message d'erreur dans le journal ActiveMQ, CPU était faible et avait beaucoup de mémoire.

Il semble que le consommateur tire le message de la file d'attente, mais assis sur eux pour une raison quelconque.

Y at-il une question de configuration qui pourrait être la cause de ce problème?

Edit:

La première ligne de mon MDB se présente comme suit:

 /* 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);
        }
Était-ce utile?

La solution 2

Il se trouve que, ActiveMQ se comportait très bien, mes ouvriers prenaient trop de temps où la sauvegarde de la file d'attente. Le code de ma question m'a permis de voir que.

Autres conseils

Comment êtes-vous certain que le consommateur tire le message de la file immédiatement? ActiveMQ fournit les propriétés de JMSActiveMQBrokerInTime et JMSActiveMQBrokerOutTime vous pouvez utiliser pour confirmer (voir ActiveMQ propriétés du message ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top