"API REST" de Hello World avec Apache Camel + Spring Boot 2. La version de l'application console sera publiée comme suit.
Hello World avec Apache Camel + Spring Boot 2 (application console)
C'est une API REST à créer, mais en accédant à "/ spring / hello", elle renvoie "Hello World". De plus, le contenu de la requête est affiché de manière asynchrone dans la sortie standard côté serveur.
Il est créé en combinant les cadres suivants.
Je ne pense pas que Spring Boot ait besoin d'explications, donc je n'expliquerai que brièvement Apache Camel.
Apache Camel est souvent décrit comme un middleware (framework) pour l'intégration entre les systèmes. L'intégration entre les systèmes a une meilleure pratique appelée Enterprise Integration Patterns, que Camel facilite. Ecrire comme ça semble un peu difficile, et j'estime que le seuil est inutilement élevé. En réalité, vous pouvez le considérer comme un cadre qui facilite la «réception d'une requête d'un autre système, l'exécution d'un traitement et l'envoi / stockage (base de données ou file d'attente) quelque part». REST / SOAP, base de données (JDBC, MongoDB, DynamoDB, etc.), fichier, file d'attente de messages (ActiveMQ, Kafka, RabbitMQ, etc.), courrier, MQTT, etc. peuvent être liés à diverses choses et parties pour le réaliser Est appelé un composant. Il existe près de 200 composants, et vous pouvez généralement trouver celui auquel vous souhaitez vous connecter. La partie «faire du traitement» couvre également des fonctions telles que la conversion de données, la conversion de format, le routage et la gestion des erreurs, et est un cadre qui peut être utilisé dans n'importe quelle application.
Commencez par créer un nouveau projet Maven. Sélectionnez "Projet Maven" et cliquez sur "Suivant".
"Suivant" sans aucun changement particulier.
Sélectionnez "maven-arche type-quickstart" et cliquez sur "Suivant".
Entrez les informations du projet et cliquez sur "Terminer".
Ceci termine la création du projet.
Modifiez pom.xml comme suit.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mkyz08.sample</groupId>
<artifactId>camel-springboot-rest-test</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>camel-springboot-rest-test Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
<camel-version>2.23.0</camel-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-parent</artifactId>
<version>${camel-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Créez le programme principal comme suit.
Application.java
package mkyz08.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication(Application.class).run(args);
}
}
Ce qui suit est le lancement d'une application Spring Boot normale.
SpringApplication(Application.class).run(args);
J'ai créé le fichier de configuration comme suit, mais il est normal de ne pas le créer car ce n'est que le nom de l'application.
src/main/resources/application.properties
camel.springboot.name = MyCamelRestApp
Ensuite, créez une classe de contrôleur (HelloRestController). Annotez la classe de contrôleur (HelloRestController) avec RestController.
HelloRestController.java
@RestController
@RequestMapping("/spring")
public class HelloRestController {
L'annotation RequestMapping mappe la méthode GET aux demandes des clients.
HelloRestController.java
@RequestMapping(method = RequestMethod.GET, value = "/hello",
produces = "text/plain")
Dans la méthode hello, la valeur du paramètre msg reçu est stockée dans la file d'attente asynchrone de "seda: hello_world". Si vous souhaitez synchroniser, vous pouvez le modifier simplement en définissant "direct: hello_world". Ensuite, la chaîne de caractères "Hello World" est renvoyée en tant que réponse.
HelloRestController.java
public String hello(String msg) {
Endpoint end = context.getEndpoint("seda:hello_world");
producer.sendBody(end, msg);
return "Hello World";
Le code source complet de la classe de contrôleur (HelloRestController) est le suivant.
HelloRestController.java
package mkyz08.example;
import javax.annotation.Resource;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.ProducerTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/spring")
public class HelloRestController {
@Resource
private ProducerTemplate producer = null;
@Resource
private CamelContext context;
@RequestMapping(method = RequestMethod.GET, value = "/hello",
produces = "text/plain")
public String hello(String msg) {
Endpoint end = context.getEndpoint("seda:hello_world");
producer.sendBody(end, msg);
return "Hello World";
}
}
Enfin, créez une route chameau. En raison de la définition d'itinéraire de Camel, l'annotation Component est ajoutée à la classe et la classe RouteBuilder est héritée. Remplacez ensuite la méthode configure et codez le contenu de l'itinéraire.
HelloWorldRoute.java
package mkyz08.example;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class HelloWorldRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("seda:hello_world")
.routeId("hello world route")
.setBody(simple("Hello World : ${body}"))
.to("stream:out");
}
}
Ce qui suit est le contenu de l'itinéraire
--Dans "from (" seda: hello_world ")", la requête reçue est traitée de manière asynchrone.
from("seda:hello_world")
.routeId("hello world route")
.setBody(simple("Hello World : ${body}"))
.to("stream:out");
Exécutez le programme créé et accédez à l'URL suivante.
http://localhost:8080/spring/hello?msg=hoge
«Hello World» est renvoyé et ce qui suit est également affiché dans la sortie standard côté serveur.
Hello World : hoge
Pour créer un fichier jar exécutable, entrez "clean install spring-boot: repackage" dans le but de "Running Configuration" et exécutez-le comme indiqué ci-dessous.
Si l'exécution réussit, le journal suivant sera généré.
[INFO] --- spring-boot-maven-plugin:2.1.0.RELEASE:repackage (default-cli) @ camel-springboot-rest-test ---
[INFO] Replacing main artifact C:\pleiades\workspace\camel-springboot-rest-test\target\camel-springboot-rest-test-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.017 s
[INFO] Finished at: 2018-12-06T18:39:38+09:00
[INFO] ------------------------------------------------------------------------```
Un fichier jar exécutable est créé dans la "cible" et le répertoire du projet, et peut être exécuté avec la commande suivante.
java -jar camel-springboot-rest-test-0.0.1-SNAPSHOT.jar
#référence
Recommended Posts