2016-02-18 3 views
0

Je travaille sur une petite application qui utilise Apache Camel avec JMX actif. En d'autres termes, j'ai un itinéraire en utilisant un composant SEDA - un seul consommateur - qui, en un mot, crée son propre thread et met en file d'attente les échanges entrants si l'itinéraire est occupé. Fondamentalement, je voudrais surveiller/parcourir/visualiser les échanges qui attendent dans la file d'attente SEDA. J'ai essayé Hawtio et JConsole avec JMX mais il ne fournit que le nombre d'échanges en vol total et actuel sur cette route donnée. Il ne mentionne pas le nombre d'échanges en attente de traitement.Apache Camel - Parcourir les échanges d'une file d'attente SEDA

J'ai également essayé le composant Parcourir qui garde la trace de tous les échanges transmis au point d'extrémité de navigation, mais il conserve tous les échanges, par opposition aux échanges "en file d'attente". Je me demande s'il y a quelque chose d'original dans Camel qui me permet de le faire ou si j'ai oublié quelque chose dans Hawtio ou JConsole.

Merci d'avance.

+0

Étant donné que vous avez un seul fil à la consommation, est le nombre de messages de Inflight moins un message en cours de traitement par votre fil et non le nombre de messages en file d'attente? – Ralf

+0

@Ralf J'ai peur que les messages #inflight soient toujours 1. Inflight signifiant "en cours de traitement". – Ivo

Répondre

1

Vous pouvez voir sur le SedaEndpoint mbean combien de messages sont dans la file d'attente. Vous pouvez les trouver dans l'arbre des points de terminaison dans Hwtio, ou aussi dans JMX.

@ManagedAttribute(description = "Current queue size") public int getCurrentQueueSize() { return queue.size(); }

+0

Vous avez raison, je regardais la route au lieu de regarder le point final. C'est utile. Mais qu'en est-il de l'inspection des échanges dans la file d'attente? Actuellement, j'utilise une politique d'itinéraire qui «montre» les échanges in/out au fur et à mesure. Je peux potentiellement les persister sous une forme ou une autre mais idéalement, je voudrais naviguer en temps réel. – Ivo

+0

En fait, juste réalisé le onExchangeBegin dans RoutePolicy ne fera pas l'affaire car ce rappel est exécuté une fois que l'Exchange est sorti de la file d'attente SEDA. – Ivo

+1

Le point de terminaison dispose d'une opération de navigation que vous pouvez utiliser: http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/seda/SedaEndpoint.html –