O que é exactamente um camelo Apache?

Não percebo o que faz exactamente o camelo.

Se pudesse dar em 101 palavras uma introdução ao camelo:

    O que é exactamente?
  • como interage com uma aplicação escrita em Java?
  • É algo que combina com o servidor? É um programa independente?

por favor, explique o que é o camelo.

Author: Ravindra babu, 2012-01-13

20 answers

Se você tem 5 a 10 minutos, eu geralmente recomendo que as pessoas leiam essa integração com o camelo Apache por Jonathan Anstey. É uma peça bem escrita que dá uma breve introdução e visão geral de alguns dos conceitos da Camel, e implementa um caso de uso com amostras de código. Nele, Jonathan escreve:

Apache Camel é um framework Java de código aberto que se concentra em tornar a integração mais fácil e mais acessível aos desenvolvedores. Ele faz isso fornecendo:

  • implementações concretas de todos os padrões de Integração Empresarial amplamente utilizados (EIPs)
  • Conectividade a uma grande variedade de transportes e APIs
  • Fácil de usar línguas específicas do domínio (DSLs) para transferir EIPs e transportes em conjunto
Há também um capítulo livre de camelo em ação que introduz camelo no primeiro capítulo. O Jonathan é co-autor do livro comigo.
 614
Author: Claus Ibsen, 2015-12-08 09:53:25
A minha opinião é descrever isto de uma forma mais acessível... Para entender o que é o camelo Apache, você precisa entender quais são os padrões de Integração Empresarial. Vamos começar com o que presumivelmente já sabemos: o padrão Singleton, o padrão de fábrica, etc; Eles são meramente formas de organizar a sua solução para o problema, mas não são soluções em si. Estes padrões foram analisados e extraídos para o resto de nós pelo Gangue dos Quatro, quando eles publicaram o seu livro: padrões de Design . Eles pouparam a alguns de nós um esforço tremendo em pensar em como estruturar melhor o nosso código.

Muito parecido com o Gang de Quatro, Gregor Hohpe e Bobby Woolf, autor do livro Enterprise Integration Patterns (PEI), em que eles propõem e documentar um conjunto de novos padrões e plantas para a rede como poderíamos melhor grande projeto baseado em componentes e sistemas, onde os componentes podem ser executados no mesmo processo ou em um diferente maquina.

[[[1]} eles basicamente propõem que estruturemos o nosso sistema para ser [[[12]}a mensagem -- onde os componentes se comunicam uns com os outros usando mensagens como Entradas e saídas e absolutamente nada mais. Eles nos mostram um conjunto completo de padrões que podemos escolher e implementar em nossos diferentes componentes que juntos formarão todo o sistema.

Então o que é o camelo Apache?

O camelo Apache oferece-lhe as interfaces para o EIPs, a base objetos, implementações comumente necessárias, ferramentas de depuração, um sistema de configuração, e muitos outros ajudantes que irão economizar um tonelada de tempo quando você deseja implementar a sua solução para seguir os EIPs. Leva o MVC. MVC é muito simples em teoria e nós poderíamos implementá-lo sem qualquer ajuda framework. Mas bons frameworks MVC nos fornecem a estrutura pronta a usar e ter ido a milha extra e pensado todas as outras coisas" lado " que você precisa quando você criar um grande projeto MVC e é por isso que os usamos a maior parte do tempo. É exactamente isso que o camelo Apache é para pips. É um quadro completo de produção para as pessoas que querem implementar a sua solução para seguir os IEP.
 950
Author: Amr Mostafa, 2012-11-26 12:19:23

Criar uma descrição do projecto não deve ser complicado.

Eu digo:

O camelo Apache está a enviar tecnologia de mensagens. cola com encaminhamento. Ele junta mensagens pontos de início e fim permitindo a transferência de mensagens de diferentes fontes para diferentes destinos. Por exemplo: JMS - > JSON, HTTP - > JMS ou Funding FTP - > JMS, HTTP - > JMS, JSON - > JMS
A Wikipédia diz:
O camelo Apache é uma rota baseada em regras e motor de mediação que fornece uma implementação baseada em objeto Java dos padrões de Integração Empresarial usando uma API (ou linguagem declarativa Java domínio específico) para configurar as regras de roteamento e mediação. A linguagem específica do domínio significa que o Apache Camel pode suportar a conclusão inteligente das regras de roteamento em segurança de tipo em sua IDE usando código Java regular sem grandes quantidades de arquivos de configuração XML; embora a configuração XML dentro da primavera também seja suportada.
Vês? Isso não foi ... foi difícil?
 637
Author: David Newcomb, 2015-01-06 22:56:57

Resumindo:

Quando existe um requisito para conectar / integrar sistemas, você provavelmente terá que se conectar a alguma fonte de dados e, em seguida, processar esses dados para corresponder aos seus requisitos de Negócio.

Para fazer isso:

1) você poderia desenvolver um programa personalizado que o faria (pode ser demorado e difícil de entender, manter para outro desenvolvedor) {[[2]} ([1]}2) em alternativa, pode usar o camelo Apache para o fazer de forma normalizada (tem a maior parte do conectores já desenvolvidos para você, você só precisa configurá-lo e plugar seu processo chamado lógica):

O camelo vai ajudar-te a:

  1. consuma dados de qualquer fonte / formato
  2. processe estes dados
  3. dados de saída para qualquer fonte/formato

Usando o camelo Apache você vai tornar mais fácil de entender / manter / estender o seu sistema para outro desenvolvedor.

O camelo Apache é desenvolvido com padrões de Integração Empresarial. Os padrões ajudam você a integrar os sistemas de uma boa maneira: -)
 107
Author: Marcin Wasiluk, 2014-05-16 13:54:09

Um diagrama é melhor que milhares de descrição. Este diagrama ilustra a arquitetura do camelo.

 68
Author: CrimsonFantasy, 2017-02-08 14:59:03

Camelo envia mensagens de A Para B:

enter image description here

Porquê todo um enquadramento para isto? Bem, e se tiver ...
    Muitos remetentes e muitos receptores Uma dúzia de protocolos.(ftp, http, jms, etc.)
  • muitas regras complexas
    • enviar uma mensagem a apenas aos receptores A E B
    • enviar uma mensagem B para o receptor C como XML , mas parcialmente traduzir , enriquecer it (adicionar metadados) e se condição X , em seguida, enviá-lo para o receptor D também, mas como CSV .
Então agora precisas ...
  • traduza entre protocolos
  • cola Componentes juntos
  • define as rotas - O que vai onde
  • filtro algumas coisas em alguns casos

O Camelo dá-te o acima (e mais) da caixa:

enter image description here

Com uma linguagem DSL fixe para ti. definir o que e como:
  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}
Veja Também este e este camelo em ação (como outros já disseram, um excelente livro!)
 58
Author: Andrejs, 2017-04-28 17:53:41
Uma das coisas que você precisa entender, antes de tentar entender o camelo Apache, São padrões de Integração Empresarial. Nem todos no terreno estão realmente cientes deles. Embora você possa certamente ler o Livro de padrões de integração da empresa, uma maneira mais rápida de se actualizar sobre eles seria ler algo como o Artigo da Wikipedia em a integração da aplicação da empresa. Uma vez que leu e compreendeu a área de estudo, seria muito mais provável que entenda o propósito do camelo Apache.

HTH

 46
Author: Crollster, 2012-01-13 03:36:48

COM BASE NA ANALOGIA

O encaminhamento à base de Camelos pode ser compreendido muito facilmente, colocando-se no lugar do proprietário de uma companhia aérea (por exemplo.: American Airlines, Jet Airways). O objectivo da sua companhia aérea é transportar passageiros de uma cidade para outra no mundo. Você usa aeronaves de diferentes "companhias aéreas" como Boeing, Airbus, HAL para transportar passageiros. A sua companhia aérea embarca passageiros que utilizam "aeroportos" da cidade e embarca-os usando o aeroporto de to city. Um passageiro pode "viajar" para várias cidades, mas em todos os lugares eles têm que passar pelo aeroporto para viajar entre o avião de sua companhia aérea e a cidade. Note que um passageiro "partindo" da cidade está essencialmente "a chegar" ao avião das suas companhias aéreas. E um passeger "chegando" à cidade, está essencialmente a partir da aeronave. Uma vez que estamos no lugar do proprietário da companhia aérea, os Termos "passageiro de chegada" e "passageiro de partida" são invertidos a partir de nossas noções convencionais que são baseadas na perspectiva das cidades. A mesma infra-estrutura de "aeroporto" de cada cidade é utilizada pelos passageiros "que partem" e "chegam". Um aeroporto fornece "infra-estrutura de partida" aos passageiros que partem, que é diferente da "infra-estrutura de chegada" prevista para os passageiros que chegam.

Os passageiros podem continuar a fazer o seu dia para as suas actividades devido a várias 'comodidades' fornecidas dentro da aeronave pelas suas companhias aéreas, enquanto viagem.

Além disso, a sua companhia aérea também oferece salas para tratamentos especiais, tais como "compreender a língua local", ou prepará-lo para a "viagem".

Vamos substituir algumas palavras / frases usadas acima por::

A sua companhia aérea: Apache Camel

Companhias aéreas: mecanismos de Transporte

A aeronave da sua companhia aérea: mecanismo de transporte subjacente do camelo Apache

Transporte: via

Passageiros: mensagem;

Cidade: sistema;

Aeroporto: Componente Camelo;

Compreender as línguas locais: conversões de tipo;

Partida: Produção, Produção

Chegando: consumindo, consumido

Viagem: rota

Amenidades: desde

Depois de substituir as palavras, aqui está o que você tem:

O propósito de 'camelo Apache' é encaminhar 'mensagens' de um 'sistema' para outro no mundo. O camelo Apache utiliza diferentes mecanismos de transporte para o encaminhamento de mensagens.

O Camelo Apache recolhe mensagens utilizando o "componente de camelo" do sistema "from" e descarrega-as utilizando o "componente de camelo" do sistema "to". Uma mensagem pode se encaminhar para vários sistemas, mas em todos os lugares eles têm que passar por 'componentes baseados em camelos' para viajar entre 'mecanismo de transporte subjacente do camelo Apache' e o sistema.

Note-se que uma mensagem "produzida" a partir do sistema é essencialmente "consumida" no transporte subjacente do camelo Apache mecanismo". E uma mensagem consumida por um sistema, é essencialmente produzida pelo "mecanismo de transporte subjacente do camelo Apache". Uma vez que estamos a tentar compreender o camelo, temos de pensar do ponto de vista do camelo para a frente. O significado dos Termos "mensagem do consumidor" e "mensagem do produtor" é ,assim, revertido das nossas noções convencionais que se baseiam na perspectiva de um sistema. A mesma "infra-estrutura de codificação baseada no camelo" é utilizada pela "mensagem do produtor" e "mensagem do consumidor". Uma "componente baseada no Camel" fornece um "parâmetro de avaliação final do produtor" para a "mensagem do produtor" e um "parâmetro de avaliação final do consumidor" para a "mensagem do consumidor". As mensagens podem ser processadas por Camelo quando estão sendo encaminhadas.

Em cima desta rota, Camel fornece características especiais como' Conversão de tipo ' e muito mais...

 44
Author: DolphinJava, 2015-04-13 12:54:21

Se você está ciente dos padrões de Integração Empresarial, o Apache Camel é uma estrutura de integração que implementa todos os EIPs.

E você pode implantar Camel como uma aplicação autônoma em um web-container.

Basicamente, se você tiver que integrar várias aplicações com diferentes protocolos e tecnologias, você pode usar o Camel.
 34
Author: Neel, 2012-01-13 02:59:38

Uma definição de outra perspectiva:

O camelo Apache é uma estrutura de integração. Ele consiste em algumas bibliotecas Java, que o ajudam a implementar problemas de integração na plataforma Java. O que isso significa e como ele difere de APIs de um lado e um ônibus de Serviço da empresa (ESB) do outro lado é descrito no meu artigo "Quando USAR O Camelo Apache".
 23
Author: Kai Wähner, 2013-03-16 17:08:43
O que é exactamente?

o Apache Camel é um quadro de integração leve que implementa todos os padrões de Integração Empresarial.Você pode facilmente integrar diferentes aplicações usando os padrões necessários.

Você pode usar Java, Spring XML, Scala ou Groovy. Quase todas as tecnologias que você pode imaginar estão disponíveis, por exemplo HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty etc.

Olha para este artigoe artigo de padrão da PEI

Como interage com uma aplicação escrita em Java?

O Camel usa uma linguagem específica do domínio Java ou DSL para criar padrões de integração empresarial ou rotas numa variedade de línguas específicas do domínio (DSL), como indicado abaixo.

Java DSL - um DSL baseado em Java que usa o estilo fluent builder.

A história do padrão de Integração Empresarial resolve-se em torno destes conceitos. :

mensagem, ponto final, produtor, consumidor, encaminhamento, ônibus, transformação e Processo.

Veja este artigoDe Anirban Konar para um dos casos de uso em tempo real.

É algo que combina com o servidor?
Funciona como uma ponte sobre vários subsistemas empresariais.
É um programa independente?

O Camelo Apache, uma estrutura de integração, integra diferentes estruturas independentes. aplicacao.

a principal vantagem da Camel : você pode integrar diferentes aplicações com diferentes tecnologias (e diferentes protocolos) usando os mesmos conceitos para cada integração.

 14
Author: Ravindra babu, 2016-09-09 17:40:50
A maioria das coisas" novas " na computação não são realmente novas, são apenas um invólucro mistificante em torno de algo que já bem compreendido. Quando eles são difíceis de entender, geralmente é porque alguém decidiu inventar novos termos de linguagem ou colonizar termos existentes para um propósito diferente (um bom exemplo de que é a reversão dos programadores X do que "cliente" e "servidor" significam.)

Camel é um wrapper/API baseado em Java para middleware inter-application.

Middleware é um termo geral para software que fornece serviços de interpretação entre entidades que não partilham uma linguagem comum ou tipos de dados.

É isso que é o camelo, no fundo. Podemos completar a descrição observando que ela fornece middleware do tipo EIP.

Ele não fornece o middleware em si, uma vez que ele não pode saber os detalhes do que as aplicações precisam se comunicar. Mas ele fornece a API para criar as partes invariantes desse middleware (criar um ponto de partida, criar um ponto final, criar condições para começar e terminar, etc)

Espero que isso ajude.
 11
Author: MMacD, 2015-09-08 13:10:31
Aqui está outra tentativa. Sabes como existem / eram coisas como Webmethods, posso ir em frente, Tibco BW, IBM Broker. Todos eles ajudaram com soluções de integração na empresa. Estas ferramentas são comumente conhecidas pelo nome Enterprise Application Integration (EAI) ferramentas.

A maioria das ferramentas de drag drop foram construídas em torno destas tecnologias e em partes você teria que escrever adaptadores em Java. Estes códigos de adaptador foram ou não testados ou tinham mau ferramentas / automação em torno de testes.

Assim como com os padrões de design na programação, você tem padrões de Integração Empresarial para soluções de integração comuns. Eles foram feitos famosos por um livro de mesmo nome por Gregor Hohpe e Bobby Woolf.

Embora seja bastante possível implementar soluções de integração que usam um ou muitos EIP, Camel é uma tentativa de fazer isso dentro da sua base de código usando um de XML, Java, Groovy ou Scala.

A Camel apoia todas as empresas. Padrões de integração listados no livro através de seu Rico DSL e mecanismo de roteamento. Então a Camel é uma tecnologia concorrente de outras ferramentas EAI com melhor suporte para testar o seu código de integração. O código é conciso devido às línguas específicas do domínio (DSLs). É legível até mesmo por usuários de negócios e é gratuito e torna você produtivo.
 8
Author: skipy, 2013-11-27 20:58:29
Existem muitos enquadramentos que nos facilitam a transmissão de mensagens e a resolução de problemas na transmissão de mensagens. Um desses produtos é o camelo Apache. A maioria dos problemas comuns tem soluções comprovadas chamadas de padrões de design. O padrão de design para mensagens é os padrões de integração de empresas(EIPs) que estão bem explicados aqui. O camelo Apache ajuda-nos a implementar a nossa solução usando o EIPs. A força de um quadro de integração é a sua capacidade de nos facilitar através de pips ou outros padrões, número de transportes e Componentes e facilidade de desenvolvimento em que o camelo Apache está no topo da lista

Cada um dos quadros tem as suas próprias vantagens algumas das características especiais do camelo Apache são as seguintes.

  1. Ele fornece o código para ser em muitos DSLs, nomeadamente Java DSL e Spring xml DSL, que são populares.
  2. fácil de usar e simples de usar.
  3. o Fuse IDE é um produto que te ajuda a codificar através UI
 7
Author: Naveen Raj, 2014-08-11 02:50:59

Em Inglês claro, Camelo recebe (muitas) coisas feitas sem grande parte do Código da placa da caldeira.

Só para lhe dar uma perspectiva, o Java DSL abaixo indicado irá criar um endpoint de descanso que será capaz de aceitar um XML que consiste em uma lista de produtos e divide-o em vários produtos e invocar o método de processo de Brand Processor com ele. E só adicionando .parallelProcessing (note a parte comentada) irá processar em paralelo todos os objetos do produto. (A classe de produto é JAXB / XJC o stub Java gerado a partir do XSD ao qual o xml de entrada está confinado.) Este código muito (juntamente com poucas dependências de Camelos) vai fazer o trabalho que costumava levar 100s de linhas de código Java.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

Depois de adicionar o ID da rota e a declaração de Registo

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);
Isto é só uma amostra, O camelo é muito mais do que um ponto final de descanso. Basta dar uma olhada na lista de componentes pluggable http://camel.apache.org/components.html
 6
Author: KingJulien, 2017-09-20 10:54:04
Camelo ajuda no encaminhamento, transformação, monitorização.

Utiliza vias que podem ser descritas como:

Quando o service bus recebe uma mensagem particular, ele irá encaminhá-lo através de nenhum dos serviços/destinos de corretagem, tais como fila/tópicos. Este caminho é conhecido como rota.

Exemplo: a sua aplicação de acções tem alguma informação por analista, será processada através do componente aplicação / web e, em seguida, o resultado será publicado para todos os Membros interessados / registados para uma actualização específica das existências.
 5
Author: sa_nyc, 2014-08-20 14:34:12
Sim, deve ser um pouco tarde. Mas uma coisa a acrescentar aos comentários de todos os outros é que, Camel é na verdade uma caixa de ferramentas ao invés de um conjunto completo de recursos. Você deve ter isso em mente ao desenvolver e precisar fazer várias transformações e conversões de Protocolo.

O próprio Camelo depende de outras estruturas e, por isso, às vezes, é preciso compreendê-las também, a fim de compreender o que é mais adequado para as suas necessidades. Existem, por exemplo, várias formas de descansa. Isto pode ficar um pouco confuso no início, mas uma vez que você começar a usar e testar você vai se sentir à vontade e seu conhecimento dos diferentes conceitos irá aumentar.

 4
Author: Souciance Eqdam Rashti, 2015-09-22 05:43:24

Numa empresa, existem vários sistemas de diferentes tipos. Alguns destes podem ser sistemas herdados, enquanto outros podem ser novos. Esses sistemas muitas vezes interagem entre si,e precisam ser integrados. Esta interação ou integração não é fácil como as implementações dos sistemas, seus formatos de mensagem podem diferir. Uma forma de o conseguir é implementar um código que ligue estas diferenças. No entanto, isso será um ponto para a integração. Se amanhã de novo houver mudança em um o outro sistema também pode ter de ser alterado, o que não é bom. Em vez deste ponto para apontar a integração que causa acoplamento apertado podemos implementar uma camada adicional para mediar as diferenças entre os sistemas. Isto resulta em acoplamento solto e não afeta muito os nossos sistemas existentes. Apache Camel é um motor de roteamento e mediação baseado em regras que fornece uma implementação baseada em objeto Java dos padrões de Integração Empresarial usando uma API (ou domínio Java declarativo). Linguagem específica) para configurar as regras de roteamento e mediação.
Explicação detalhada e exemplos podem ser encontrados aqui tutoriais de camelo Apache

 3
Author: Rameez, 2017-04-08 12:40:04
Apache Camel é um framework Java para Integração Empresarial. Eg: - se você está construindo uma aplicação web que interage com muitas API de fornecedores, podemos usar o camel como ferramenta de integração externa. Podemos fazer mais com ele baseado no caso de uso. Camel in Action from Manning publications é um grande livro para aprender Camelo. As integrações podem ser definidas como abaixo.

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");
Isto é apenas para criar um endpoint da API de descanso que, por sua vez, chama uma API externa e envia o pedido de volta

Spring DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>
Passando às vossas perguntas ...
    O que é exactamente? Ans: - trata-se de um quadro que implementa os padrões de integração das Empresas
  1. como interage com uma aplicação escrita em Java? Ans: - ele pode interagir com quaisquer protocolos disponíveis, como http, ftp, amqp etc
  2. É algo que combina com o servidor? Ans: - ele pode ser implantado em um recipiente como tomcat ou pode ser implantado independentemente como um processo java É um programa independente? - Pode ser.
Espero que ajude.
 2
Author: Khader M A, 2018-03-01 15:48:31

É como um oleoduto que liga

From---->To

No meio de u pode adicionar tantos canais e tubos. A torneira pode ser de qualquer tipo automático ou manual para o fluxo de dados e uma rota para canalizar o fluxo.

Ele suporta e tem implementação para todos os tipos e tipos de processamento. E para o mesmo processamento muitas abordagens, porque tem muitos componentes e cada componente também pode fornecer a saída desejada usando diferentes métodos sob ele.

Por exemplo:, Arquivo a transferência pode ser feita em camel com tipos de arquivos movidos ou copiados e também a partir de pasta, Servidor ou fila.
-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

De / para - - - - - pasta, direct, seda, vm pode ser qualquer coisa

 1
Author: javalearner_heaven, 2017-09-07 08:23:28