Como alterar as propriedades do processador durante a execução usando Camel?

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

  •  16-09-2019
  •  | 
  •  

Pergunta

Eu tenho um Camel Route Definição escrito em Java DSL assim:

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

Esta liga meus dois endpoints usando um Throttler que limita o fluxo de mensagens 200 mensagens por segundo.

Eu estou procurando uma maneira de mudar o maximumRequestCount / segundo durante a execução. Então eu preciso de alguma forma obter a instância Throttler que é chamado e altere a propriedade.

Como posso acessar o Throttler?

Foi útil?

Solução

Ok, eu descobri-lo por mim ...

Você precisa definir sua instância Throttler si mesmo.

Throttler throttler = new Throttler(null, 200);

Em seguida, você pode usá-lo em suas rotas como este, porque Throttler implementa a interface Processor:

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

Toda vez que você como você pode alterar as propriedades do throttler.

Outras dicas

Sim, isso é uma solução elegante.

Em Camel 2.0 agora você pode navegar pelos processadores de tempo de execução da rota e, assim, encontrar Throttlers e, em seguida, ser capaz de mudá-lo de forma dinâmica.

Mas também estamos trabalhando para melhorar o JMX em Camel 2.1 para que você possa mudar throttler / delayer e os gostos de JMX.

E talvez também melhorar a API Navegar para que você possa encontrar em um forro de um, por exemplo, talvez pesquisar por id se você fornecer um id na rota. Ou por tipos para que você possa filtrar e só obter os Throttlers etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top