Come modificare le proprietà del processore durante il runtime utilizzando Camel?
-
16-09-2019 - |
Domanda
Ho un Camel definizione della rotta scritto in Java DSL in questo modo:
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
Questa connette i miei due punti finali con un Throttler che limita il flusso di messaggi a 200 messaggi al secondo.
Sto cercando un modo per cambiare il maximumRequestCount / secondo durante il runtime. Così ho bisogno di ottenere in qualche modo all'istanza Throttler che si chiama e modificare la proprietà.
Come posso accedere alla Throttler?
Soluzione
Ok, ho capito da sola ...
È necessario definire l'istanza Throttler te stesso.
Throttler throttler = new Throttler(null, 200);
Quindi è possibile utilizzare nei vostri percorsi come questo, perché Throttler implementa l'interfaccia Processore:
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
Ogni volta che si desideri è possibile modificare le proprietà del throttler.
Altri suggerimenti
Sì che è una soluzione chiara.
In Camel 2.0 è ora possibile navigare i processori di runtime del percorso e, quindi, a trovare nessuna Throttlers e quindi in grado di modificare in modo dinamico.
Ma stiamo anche lavorando per migliorare il JMX in Camel 2.1 in modo da poter cambiare throttler / delayer e artisti del calibro di JMX.
E magari anche migliorare l'API Naviga in modo da poter trovare in un uno di linea, ad esempio, forse occhiata da id se fornisci un id nel percorso. O per i tipi in modo da poter filtrare e ottenere solo i Throttlers etc.