BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Apache Camel 2.14 : Java 8, Spring 4, REST DSL et Metrics

Apache Camel 2.14 : Java 8, Spring 4, REST DSL et Metrics

Favoris

L'équipe Apache Camel a récemment sorti la version 2.14, leur 66ème version. Camel est un framework d'intégration open-source qui fournit des composants basés sur les patterns d'intégration d'application d'entreprise les plus répandus. Il permet à une application de définir des routes et des règles de médiation à l'aide de nombreux langages dédiés (DSL), en utilisant, par exemple, Java, XML, Groovy ou Scala.

Les nouvelles fonctionnalités incluent un DSL REST et une intégration Swagger, qui permet de documenter une API de manière simple, ainsi que le support de Java 8 (Java 6 n'étant plus supporté) et Spring 4 (les utilisateurs des versions Spring 3.x ou antérieures auront besoin de camel-test-spring3 pour les tests). Un DSL spécifique à Java 8 qui permet d'utiliser les expressions lambda a été reporté à la prochaine version.

Dans un article sur son blog intitulé Création simple endpoints REST avec Apache Camel 2.14, Christian Posta, spécialiste et architecte Middleware en chef chez Red Hat écrit :

Avec la version 2.14, le DSL a été étendu afin de rendre la création de endoints REST plus simple. Par exemple :

rest("/user").description("User rest service")
    .consumes("application/json").produces<("application/json")

    .get("/{id}").description("Find user by id").outType(User.class)
        .to("bean:userService?method=getUser(${header.id})")

    .put().description("Updates or create a user").type(User.class)
        .to("bean:userService?method=updateUser")

    .get("/findAll").description("Find all users").outTypeList(User.class)
        .to("bean:userService?method=listUsers");

Dans cet exemple, nous utilisons le DSL pour définir des endpoints REST, nous voyons que c'est clair, intuitif et direct.

D'autres fonctionnalités importantes qui ont été ajoutées sont le support de Netty 4.X, une API composant (qui permet de créer plus simplement des composants Camel), plus de beans JMS, et une intégration de Metrics qui permet de recueillir un certain nombre de métriques directement à partir des routes. Les types de métriques supportées sont counter, meter, histogram et timer. Ces statistiques permettent de mesurer et de superviser le comportement des routes.

L'intégration de Metrics dans une application Apache Camel / CXF / Spring Boot peut être faite par le simple ajout d'une ligne dans la classe de configuration de l'application.

@Configuration
@ImportResource("classpath:META-INF/cxf/cxf.xml")
@ComponentScan("com.company.app")
public class CamelConfig extends CamelConfiguration {

    @Override
    protected void setupCamelContext(CamelContext camelContext) throws Exception {
        // make Camel aware of Spring Boot’s application.properties
        PropertiesComponent pc = new PropertiesComponent();
        pc.setLocation("classpath:application.properties");
        camelContext.addComponent("properties", pc);

        // enable performance metrics
        camelContext.addRoutePolicyFactory(new MetricsRoutePolicyFactory());
        super.setupCamelContext(camelContext);
    }
}

Après avoir activé Metrics, on peut utiliser la console hawtio pour observer les statistiques de performances des routes. Cela permet, par ailleurs, d'observer, d'éditer, de tracer et de débugger des routes Camel dans un navigateur web à l'aide d'une application HTML5 / AngularJS. Claus Ibsen, ingénieur en développement en chef chez Red Hat, a écrit un article sur son blog intitulé Plus de métriques dans Apache Camel 2.14 et a inclus des captures d'écran issues de hawtio qui affichent des métriques de routes Camel.

Apache Camel 2.14 contient beaucoup de nouvelles fonctionnalités et le support de plate-formes modernes. Ses DSL Java et Scala permettent aux utilisateurs de s'éloigner du XML et de plus se concentrer sur la logique métier. Son DSL REST offre une manière concise de créer des endpoints REST qui sont auto-documentés à l'aide de Swagger.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT