2017-05-04 1 views
0

J'implémente mon code en boot de printemps en utilisant Apache camel comme couche intermédiaire et en réglant les routes en camel j'utilisais un composant quartz2 pour cela je voulais utiliser du quartz externe. fichier de propriétés pour remplacer le fichier par défaut quartz.properties.Can quelqu'un s'il vous plaît aidez-moi dans ce domaine. J'ai essayé d'implémenter à l'aide de CommandLineRunner mais je reçois une exception comme ci-dessous org.springframework.beans.factory.BeanCreationException: Erreur lors de la création du bean avec le nom 'schedulerApplication': échec de l'injection des dépendances auto-générées; exception imbriquée est java.lang.IllegalArgumentException: Impossible de résoudre l'espace réservé « org.quartz.scheduler.instanceName » de la valeur « $ {} org.quartz.scheduler.instanceName »Configuration externe de spring boot et quartz.properties en camel apache

Répondre

0

Si je vous comprends bien, vous devez être vouloir pour externaliser vos propres propriétés de quartz et essayer de l'utiliser dans le composant camel-quartz2. créer votre entrée personnalisée dans quartz.properties comme ci-dessous

quartz.uri=quartz://group/quartzScheduler?cron=0+05+21+?+*+* 

Ci-dessous un exemple de route

public void configure() throws Exception { 
     super.configure(); 
     String externalService= PropertyParser.getInstance().getStringProperty(Key.Service); 
     from(quartzEndpoint("sampleQuartz")) 
       .to(externalService) 
       .process(new Processor() { 
        public void process(Exchange e) throws Exception { 
         log.info("Before storing " + MessageHelper.extractBodyAsString(e.getIn())); 
         MyHelper.writeCLOBPut(e); 
         log.info("After storing " + MessageHelper.extractBodyAsString(e.getIn())); 
        } 
       }).log("Stored in DB"); 
    } 

Hope this aidé

+0

Merci pour votre réponse Balaji encore je ne suis pas clair comme quoi est "sampleQuartz" dans votre code car il devrait être le point final. J'utilise le composant quartz2 dans mon code. –

+0

Au lieu d'écrire l'expression cron comme ceci, j'ai écrit une méthode de configuration "quartzEndpoint" qui accepte un nom et récupère l'expression cron de la base de données. De manière simple, vous pouvez écrire comme ceci - de ("quartz2: // myGroup/myTimerName? Cron = 0 + 0/5 + 12-18 +? + * + MON-FRI") –