Comment modifier les propriétés du processeur lors de l'exécution en utilisant Camel?

StackOverflow https://stackoverflow.com/questions/1131107

  •  16-09-2019
  •  | 
  •  

Question

Je Camel Route Définition en Java DSL comme ceci:

from(myEndpoint) 
.throttle(200)
.to(myOtherEndpoint);

relie mes deux extrémités à l'aide d'un Throttler qui limite le flux de messages à 200 messages par seconde.

Je suis à la recherche d'un moyen de changer le maximumRequestCount / seconde pendant l'exécution. Donc, je dois obtenir en quelque sorte à l'instance Throttler qui est appelé et changer la propriété.

Comment puis-je accéder au Throttler?

Était-ce utile?

La solution

Ok, j'ai tout compris par moi-même ...

Vous devez définir votre instance Throttler vous.

Throttler throttler = new Throttler(null, 200);

Ensuite, vous pouvez l'utiliser dans vos routes comme celle-ci, parce que Throttler implémente l'interface du processeur:

from(myEndpoint) 
.process(throttler)
.to(myOtherEndpoint);

Chaque fois que vous le souhaitez, vous pouvez modifier les propriétés du throttler.

Autres conseils

Ouais, c'est une solution propre.

Dans Camel 2.0, vous pouvez maintenant naviguer dans les processeurs d'exécution dans la route et ainsi trouver des Throttlers et être en mesure de changer dynamiquement.

Mais nous travaillons également sur l'amélioration de la JMX dans Camel 2.1 afin que vous puissiez changer throttler / Delayer et les goûts de JMX.

Et peut-être aussi d'améliorer l'API Naviguer de sorte que vous pouvez trouver dans une seule ligne, par exemple, peut-être lookup par id si vous fournissez un ID dans la route. Ou par types de sorte que vous pouvez filtrer et seulement obtenir les Throttlers etc.

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