2017-09-15 4 views
0

Je suis nouveau à Camel et d'essayer de mettre en œuvre une exigence ci-dessousmis à la fois Dynamiquement gaz et timePeriodMillis Camel

de ("Seda: // requestCamel") .throttle (ExpressionBuilder.beanExpression (CamelHandler.getInstance() , "getTransactionsPerMillie")). timePeriodMillis (CamelHandler.getTimeInMillie()) .bean (service, "callCamel ($ {body})"); De l'expression ci-dessus les deux valeurs (throttle et timePeriodMillis) requis pour changer dynamiquement au moment de l'exécution. En utilisant l'expression du haricot je pourrais être capable de gérer pour la manette des gaz mais timePeriodMillis n'accepte pas les valeurs en temps réel. Toute aide/travail serait très utile.

Merci

Répondre

0

Vous ne pouvez pas modifier la période de temps lors de l'exécution Millis - sa une valeur fixe dans la mise en œuvre actuelle du throttler dans Apache Camel.

+0

Merci Claus pour la réponse. Serait-il possible d'actualiser un itinéraire à chaque fois avec de nouvelles valeurs pour throttle et timePeriodMillis. Si je peux, y a-t-il des effets secondaires? –

+0

Non, ce serait une mauvaise idée car le throttler aurait un état et étranglerait certains messages. Êtes-vous sûr de ne pas abuser d'un throtteur pour un delayer? Avec un delayer vous pouvez retarder chaque message individuellement calculé à partir d'un bean –

+0

Merci pour la mise à jour. Delayer peut aussi fonctionner pour mon cas d'utilisation. Je pense que je suis clair sur mon cas d'utilisation. Exigence: l'utilisateur indiquera le nombre de messages qu'il souhaite traiter dans une fenêtre temporelle donnée. E.g 1er utilisateur fournit 1000 messages à traiter en 5 min. Le 2ème utilisateur fournit 2000 messages en 5 minutes et ainsi de suite. J'ai un contexte de chameau et une seule route. Pourriez-vous s'il vous plaît montrer quelques lumières. –