2013-02-11 3 views
2

J'ai créé un projet Camel à l'aide de la configuration Spring et maintenant, je dois le déployer et l'exécuter sur mon environnement de production. Fondamentalement, c'est un processus qui écoute un courtier RabbitMQ et, quand un message est envoyé, le traiter. J'utilise éclipse et je créer une configuration de débogage/run avec cet objectif:Déploiement du projet Apache Camel

camel:run 

en utilisant le fichier de configuration Spring pour définir la route et les haricots, je n'écrire une classe principale, alors comment puis-je déployer et exécuter? Je ne peux pas recompiler le projet sur l'environnement de production parce que je ne peux pas installer un nouveau logiciel donc tout ce dont j'ai besoin pour exécuter mon processus doit être copié de mon environnement de développement.

Un conseil? Merci!

Répondre

3

http://camel.apache.org/running-camel-standalone.html

et

http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

décrivent des mécanismes qui vous permettent de déployer/run. Le camel: run est essentiellement identique à la création d'une classe org.apache.camel.spring.Main qui charge le contexte de l'application Spring. Il peut être aussi simple que:

public static void main(final String[] args) { 

    Main main = new Main(); 
    main.setApplicationContextUri("classpath:META-INF/applicationContext.xml"); 
    main.enableHangupSupport(); 

    try { 
     main.run(); 
    } ... 
} 

Ceci est essentiellement le même que l'objectif camel: run.

Pour que cela se déploie correctement, vous devrez peut-être utiliser le maven assembly plugin ou le maven shade plugin. Cela vous permettra de créer un seul artefact (zip, pot, peu importe) qui peut être déployé. Même code, même définition d'itinéraire.

+1

cmonkey, merci! C'est le genre de réponse que j'aimerais recevoir. Court, avec référence et un petit échantillon de code. Brillant! Parfait! –

+0

cmonkey, j'ai quelques problèmes avec ce processus. Comment puis-je le garder en vie pour toujours? (jusqu'à ce que je le tue manuellement). J'ai enlevé enableHangupSupport() et maintenant il reste vivant pendant 40/50 minutes mais, après cela il sera fermé. Avec enableHangupSupport() il reste vivant 4 minutes au moins. –

+0

Le processus décrit * devrait * le garder en vie pour toujours. Je présume qu'une exception suffisamment fatale est jetée dans le code de l'application. Ou, du code détruit le contexte de l'application. Des journaux? Stderr? Pourrait mériter une nouvelle question en fonction du problème. – cmonkey