2017-10-01 3 views
0

J'utilise un composant de script apache chamel pour appeler un fichier groovy externe.Comment définir les propriétés d'un composant de script camel groovy apache

 from("activemq:queue:test.ChooseIManger") 
    .script().groovy("resource:classpath:tests/port/test.gsh") 

Je souhaite transmettre certaines propriétés lors de l'appel de ce script. Je peux le faire avec un code java simple comme suit. Mais comment nous pouvons lier les propriétés dans un routeur camel comme celui-ci.

Thanx

Répondre

1

Selon le documentation il semble que vous devriez être en mesure de surcharger l'instance par défaut Groovy en utilisant un GroovyShellFactory personnalisé.

Quelque chose comme ceci selon les informations que vous avez fourni:

public class CustomGroovyShellFactory implements GroovyShellFactory { 

    public GroovyShell createGroovyShell(Exchange exchange) { 
    Binding binding = new Binding(); 
    binding.setProperty("INPUTS", inputs); 
    binding.setProperty("RESULT", results); 
    return new GroovyShell(binding); 
    } 
} 

Et puis ajouter le grain de café à votre contexte.

+0

J'ai défini le camelConext comme ceci. \t @Inject \t @ContextName ("chameau-cdi-contexte") \t CamelContext privé camelctx; Comment nous pouvons lier cette fabrique personnalisée à ce contexte. Y at-il un moyen de lier cela au routeur. Merci pour votre réponse. – user3025404

+0

Alors que nous développons nos routes en utilisant XML DSL (OSGi Blueprint), je ne suis pas sûr à 100% comment vous ajouteriez votre bean au contexte. Il est probablement fait en utilisant Spring Dependency Injection comme c'est le cas lors de l'utilisation de XML DSL. – noMad17