Hallo Welt "REST API" mit Apache Camel + Spring Boot 2. Die Konsolenanwendungsversion wird wie folgt veröffentlicht.
Hallo Welt mit Apache Camel + Spring Boot 2 (Konsolen-App)
Es ist eine zu erstellende REST-API, aber beim Zugriff auf "/ spring / hello" wird "Hello World" zurückgegeben. Darüber hinaus wird der Inhalt der Anforderung in der Standardausgabe auf der Serverseite asynchron angezeigt.
Es wird durch Kombinieren der folgenden Frameworks erstellt.
Ich glaube nicht, dass Spring Boot einer Erklärung bedarf, daher werde ich nur Apache Camel kurz erläutern.
Apache Camel wird häufig als Middleware (Framework) für die Integration zwischen Systemen beschrieben. Für die Integration zwischen Systemen gibt es eine bewährte Methode namens Enterprise Integration Patterns, die Camel vereinfacht. So zu schreiben klingt etwas schwierig, und ich habe das Gefühl, dass die Schwelle unnötig hoch ist. In Wirklichkeit können Sie es sich als ein Framework vorstellen, das es einfach macht, "eine Anfrage von einem anderen System zu empfangen, eine Verarbeitung durchzuführen und irgendwo zu senden / speichern (DB oder Warteschlange)". REST / SOAP, Datenbank (JDBC, MongoDB, DynamoDB usw.), Datei, Nachrichtenwarteschlange (ActiveMQ, Kafka, RabbitMQ usw.), Mail, MQTT usw. können mit verschiedenen Dingen und Teilen verknüpft werden, um dies zu realisieren Wird als Komponente bezeichnet. Es gibt fast 200 Komponenten, und normalerweise finden Sie diejenige, mit der Sie eine Verbindung herstellen möchten. Der Teil "Einige Verarbeitungsschritte ausführen" behandelt auch Funktionen wie Datenkonvertierung, Formatkonvertierung, Routing und Fehlerbehandlung und ist ein Framework, das in jeder Anwendung verwendet werden kann.
Erstellen Sie zunächst ein neues Maven-Projekt. Wählen Sie "Maven Project" und klicken Sie auf "Next".
"Weiter" ohne besondere Änderungen.
Wählen Sie "Maven-Arche Typ-Schnellstart" und klicken Sie auf "Weiter".
Geben Sie die Projektinformationen ein und klicken Sie auf "Fertig stellen".
Damit ist die Projekterstellung abgeschlossen.
Ändern Sie pom.xml wie folgt.
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>
Erstellen Sie das Hauptprogramm wie folgt.
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);
}
}
Das Folgende ist der Start einer normalen Spring Boot-Anwendung.
SpringApplication(Application.class).run(args);
Ich habe die Einstellungsdatei wie folgt erstellt, aber es ist in Ordnung, sie nicht zu erstellen, da es sich nur um den Anwendungsnamen handelt.
src/main/resources/application.properties
camel.springboot.name = MyCamelRestApp
Erstellen Sie als Nächstes eine Controller-Klasse (HelloRestController). Kommentieren Sie die Controller-Klasse (HelloRestController) mit dem RestController.
HelloRestController.java
@RestController
@RequestMapping("/spring")
public class HelloRestController {
Die Annotation RequestMapping ordnet die GET-Methode Anforderungen von Clients zu.
HelloRestController.java
@RequestMapping(method = RequestMethod.GET, value = "/hello",
produces = "text/plain")
Bei der Hallo-Methode wird der Wert des empfangenen msg-Parameters in der asynchronen Warteschlange von "seda: hello_world" gespeichert. Wenn Sie synchronisieren möchten, können Sie dies ändern, indem Sie "direct: hello_world" einstellen. Dann wird die Zeichenfolge "Hello World" als Antwort zurückgegeben.
HelloRestController.java
public String hello(String msg) {
Endpoint end = context.getEndpoint("seda:hello_world");
producer.sendBody(end, msg);
return "Hello World";
Der gesamte Quellcode für die Controller-Klasse (HelloRestController) lautet wie folgt.
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";
}
}
Erstellen Sie schließlich eine Kamelroute. Aufgrund der Routendefinition von Camel wird die Komponentenanmerkung zur Klasse hinzugefügt und die RouteBuilder-Klasse wird vererbt. Überschreiben Sie dann die Konfigurationsmethode und codieren Sie den Inhalt der Route.
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");
}
}
Das Folgende ist der Inhalt der Route
--In "from (" seda: hello_world ")" wird die empfangene Anfrage asynchron verarbeitet.
from("seda:hello_world")
.routeId("hello world route")
.setBody(simple("Hello World : ${body}"))
.to("stream:out");
Führen Sie das erstellte Programm aus und greifen Sie auf die folgende URL zu.
http://localhost:8080/spring/hello?msg=hoge
"Hello World" wird zurückgegeben, und Folgendes wird auch in der Standardausgabe auf der Serverseite angezeigt.
Hello World : hoge
Um eine ausführbare JAR-Datei zu erstellen, geben Sie "Clean Install Spring-Boot: Repackage" in das Ziel unter "Konfiguration ausführen" ein und führen Sie sie wie unten gezeigt aus.
Wenn die Ausführung erfolgreich ist, wird das folgende Protokoll ausgegeben.
[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] ------------------------------------------------------------------------```
Eine ausführbare JAR-Datei wird im "Ziel" und im Verzeichnis des Projekts erstellt und kann mit dem folgenden Befehl ausgeführt werden.
java -jar camel-springboot-rest-test-0.0.1-SNAPSHOT.jar
#Referenz
Recommended Posts