2016-01-27 1 views
0

J'ai une application basée sur Camel avec direct-vm routes, à partir de laquelle je reçois parfois DirectVmConsumerNotAvailableException s après redéploiement de notre serveur d'intégration continue. Le redéploiement se fait à l'aide des commandes de Karaf:Comment faire face à DirectVmConsumerNotAvailableException

features:uninstall my-feature/snapshot-version 
features:removeUrl mvn:my-package/my-feature/snapshot-version/xml/features 
features:addUrl mvn:my-package/my-feature/snapshot-version/xml/features 
features:install my-feature/snapshot-version 

Ma fonction se compose de plusieurs faisceaux, la voie brisée-vm directe entre deux d'entre eux.

Existe-t-il un moyen de se reconnecter automatiquement de/vers la route direct-vm? Existe-t-il un meilleur moyen de redéployer l'application Camel? Existe-t-il un moyen de détecter les routes brisées avant qu'elles ne soient utilisées?

Répondre

1

Depuis Camel 2,16 il y a une option failIfNoConsumers vous pouvez définir pour false, si elle est OK pour vous, d'avoir des échanges à défaut, qui apparaissent généralement au démarrage, lorsque le faisceau, la définition de la route n'est pas encore chargé, mais un autre bundle, en utilisant un point de terminaison est déjà. L'inconvénient est que, en utilisation normale, ces erreurs ne sont généralement pas acceptables et nécessitent une manipulation.

J'ai rencontré le même problème une seule fois (avant 2.16) et j'ai écrit un gestionnaire d'erreur personnalisé, qui vérifie DirectVmConsumerNotAvailableException, s'il s'est produit au démarrage, puis supprime silencieusement l'échange.

Si vous connaissez la route, que votre terminal initialise Direct-VM et avoir accès à l'CamelContext, du point, l'exception se produit, vous pouvez vérifier avec CamelContext.getRouteStatus(String id), si la route est déjà en cours d'exécution et ...

+0

Merci pour votre réponse. J'utilise actuellement Camel 2.15.1 de JBoss Fuse. Je vais essayer de jouer avec les options 'block' et' timeout', c'est prometteur. – Kojotak