O Apache Camel é uma biblioteca de motores de regras muito práticas que pode ser usada para processar eventos e informações de diferentes fontes. Você pode transmitir mensagens em diferentes protocolos, como VM, HTTP, FTP, JMS e até no sistema de arquivos, e manter sua lógica operacional e separação lógica de transmissão, o que pode torná -lo mais focado no conteúdo da mensagem.
Neste artigo, fornecerei uma demonstração de entrada de camelo Apache Java Apache.
Primeiro, crie um pom.xml de um projeto Maven.
<? .org/2001/xmlschema-instance "XSI: Schemalocation =" http://maven.apache.org/pom/4.0.0http://maven.APache.org/maven- v4_0.xsd "> <MODELVERSISIINISIINISIINISINISIINISINISINISION"> 4.0 . 0 </Modelversion> Camel-Spring-Demo </group> <Artifactid> Came L-SPRING-Demo </ArtiFactid> <Version> 1.0-Snapshot </Version> <Packaging> jar </packaging> <properTies> < Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <camel.version> 2.11.1 </camel.version> </properties> Ency> <ouprougid> org.apache.camel </pirdid> </ ArtifactId> Camel-core </stardifactId> <versão> $ {camel.version} </version> </dependency> <pendency> org.slf4j </groupiD> <TRTIFACTID> slf4j-simple </stifactId> <versão> 1.7 .5 </versão> </dependency> </dependências> </project>Aqui, usamos apenas o pacote de camel-core.jar, na verdade, ele fornece muitos componentes práticos que você pode usar. Para fins de registros de log, usei Slf4j-simple como a implementação do registro de log, para que possamos ver a saída do console.
Em seguida, precisamos apenas construir uma classe de roteamento. As rotas são definidas como passar a mensagem de uma extremidade para a outra. Criaremos os arquivos SRC/Main/Java/CamelCoredemo/TimerRouteBuilder.java, enviará uma mensagem ao processador a cada segundo e imprimirá -lo simplesmente.
Pacote camelcoremo; de ("time: // timer1? period = 1000") .process (new Processor () {public void Process (Exchange msg) {log.info ("processamento {}", msg);}});}}}O exposto acima é toda a necessidade deste exemplo e agora compilar e executar.
BASH> MVN COMPILEBASH> MVN EXEC: Java -Dexec.MainClass = org.apache.camel.main.main -dexec.args = '-r CamelCoremorOutbuilder'
Observe que aqui não escrevemos a entrada principal da classe Java.
Controle CamelContext
Quando o camelo é iniciado, ele criará um objeto CamelContext, que possui muitas informações sobre como executar o camelo e também inclui a definição de rota que criamos. Agora, se você deseja obter mais controle através do CamelContext, precisará escrever seu código principal. Estou aqui um exemplo simples.
Pacote camelcoremo; Estático void main (string [] args) lança exceção {new Timermain () ); WaitForsStop ();} Routebuilder CreateroutEbuilder () {Retorne Novo TimerRoutEbuilder ();Pode -se observar que reutilizamos a classe TimerRoutebuilder existente no método CreteroteteBuilder (). Agora, nossa classe principal foi totalmente controlada quando é criada, iniciada e interrompida em CamelContext. O objeto Context (CamelContext) permite controlar como configurar o camel em um global, não no nível da rota. Seu link javadoc fornece todos os métodos do setter e você pode estudar o que ele pode fazer.
Observe que também precisamos fornecer uma pequena quantidade de código em nossa categoria principal. Primeiro de tudo, precisamos lidar com o problema do fechamento elegante, por isso adicionamos uma função de fechamento de Java para chamar o método STOP () do contexto. Em segundo lugar, após o início do contexto, precisamos adicionar um bloco de threads. Se você não bloquear seu tópico principal após a inicialização, ele simplesmente sairá após o início e será inútil. Você executará o Camel como um serviço (como um servidor) até pressionar a tecla Ctrl+C para encerrar o processo.
Melhore a classe principal que começa a iniciar o CamelContext
Se você não deseja processar o código das configurações da classe principal tanto quanto o exemplo acima, poderá simplesmente herdar o org.apache. Ao usar esta classe, você pode não apenas permitir que seu contexto seja definido automaticamente, mas também obtenha todas as características adicionais da linha de comando, como quanto tempo o processo de controle é executado, permite o rastreamento, carrega uma classe de rota personalizada e assim por diante.
Reconstrua o exemplo a seguir, o código é o seguinte:
Pacote atencioso; Estático void main (string [] args) lança exceção {timermain2 main = new Timermain2 (); ;}} Agora, o código do Timermain2 é menor do que antes, você pode experimentá -lo, deve ser o mesmo que os recursos anteriores.
BASH> MVN COMPILEBASH> MVN EXEC: Java -Dexec.MainClass = CamelCoremo.timermain2 -dexec.args = '-t'
Observe que, depois de darmos a opção -t, o rastreamento de rota será reservado. Use -h verá todas as opções disponíveis.
Adicione Bean com o mecanismo de registro de Camel
No exemplo anterior do TimerRouteBuilder, criamos um processamento anônimo no código. Agora, se você deseja reunir alguns procesores diferentes, adicionar um feijão à adição de um mecanismo de registro de camelo reduzirá melhor a confusão do código. O Camel permite que você use o processamento como feijão em seu espaço de registro e, em seguida, você só precisa chamá -los de componentes de feijão. A seguir, o meu código de reconstrução:
Pacote atencioso; Estático void main (string [] args) lança exceção {timerbeansmain main = new TimerBeansMain (); ()); = 1000 ") .to (" bean: processbybean1 ") .to (" bean: processagainbybean2 "); entrents processador {public void Process (Exchange msg) {log.info (" primeiro processo {} ", msg);}} Classe estática Bean2 implementa o processador {public void Process (Exchange msg) {log.info ("Sec Ond Process {}", msg);}}}Agora, a classe de rota é mais concisa e clara e, ao mesmo tempo, o código de processamento também foi reconstruído em uma classe independente. Quando você precisa escrever uma rota muito complicada para alcançar a lógica de negócios, esse método pode ajudá -lo a organizar e testar melhor seu código. Ele permite que você construa Pojo Bean que pode ser reutilizado como "Lego". O espaço de registro do Camel também pode ser usado para muitos outros usos.
O exemplo de rota acima é composto pelo Java DSL de SO.
Espero que este artigo possa ajudá -lo a pular a fase de exploração do camelo.