[JAVA] Hello World (API REST) avec Apache Camel + Spring Boot 2

introduction

"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.

Qu'est-ce qu'Apache Camel?

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.

Créer un projet dans Eclipse

Commencez par créer un nouveau projet Maven. Sélectionnez "Projet Maven" et cliquez sur "Suivant".

image.png

"Suivant" sans aucun changement particulier.

image.png

Sélectionnez "maven-arche type-quickstart" et cliquez sur "Suivant".

image.png

Entrez les informations du projet et cliquez sur "Terminer". image.png

Ceci termine la création du projet.

Modifier pom.xml

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éer un programme

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 l'application Web Hello World

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

Créer un fichier jar exécutable

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.

image.png

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

Hello World (API REST) avec Apache Camel + Spring Boot 2
Hello World (application console) avec Apache Camel + Spring Boot 2
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Hello World avec Spring Boot
Jusqu'à "Hello World" avec Spring Boot
(Intellij) Hello World avec Spring Boot
Hello World avec Eclipse + Spring Boot + Maven
(IntelliJ + gradle) Hello World avec Spring Boot
Bonjour tout le monde! Avec Spring Boot (Marven + éditeur de texte)
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Spring avec Kotorin - 4 Conception d'API REST
Implémenter l'API REST avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
Créez une API REST avec Apache2 + Passenger + Sinatra.
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
[Entraine toi! ] Affichez Hello World avec Spring Boot
Comment Spring Security fonctionne avec Hello World
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Développement d'applications Web Spring Boot2 avec création de Visual Studio Code Hello World
Hello World à une vitesse explosive avec Spring Initializr! !! !!
Essayez d'afficher Hello World avec Spring + Gradle
Créer un serveur API Web avec Spring Boot
Hello World avec Micronaut
Télécharger avec Spring Boot
Exemple de traitement par lots de données sur DB avec des démarreurs Apache Camel Spring Boot
La coopération des messages a commencé avec l'édition Spring Boot Apache Kafka
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Un mémorandum lors de la création d'un service REST avec Spring Boot
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Comparaison Hello World entre Spark Framework et Spring Boot
Générer un code à barres avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Bonjour tout le monde avec VS Code!
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Spring Boot à partir de Docker
Définir des cookies avec Spring Boot
Test de l'API REST avec REST Assured
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Lier l'API avec Spring + Vue.js
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Hello World avec SpringBoot / Gradle
Bonjour tout le monde! Avec Asakusa Framework!
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Créez une application Web Hello World avec Spring Framework + Jetty
Faisons une API simple avec EC2 + RDS + Spring boot ①