[JAVA] Hallo Welt (REST API) mit Apache Camel + Spring Boot 2

Einführung

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.

Was ist Apache Camel?

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 ein Projekt in Eclipse

Erstellen Sie zunächst ein neues Maven-Projekt. Wählen Sie "Maven Project" und klicken Sie auf "Next".

image.png

"Weiter" ohne besondere Änderungen.

image.png

Wählen Sie "Maven-Arche Typ-Schnellstart" und klicken Sie auf "Weiter".

image.png

Geben Sie die Projektinformationen ein und klicken Sie auf "Fertig stellen". image.png

Damit ist die Projekterstellung abgeschlossen.

Ändern Sie pom.xml

Ä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 ein Programm

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 die Hello World-Webanwendung aus

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

Erstellen Sie eine ausführbare JAR-Datei

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.

image.png

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

Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2
Hallo Welt mit Spring Boot
Hallo Welt mit Spring Boot!
Hallo Welt mit Spring Boot
Bis "Hallo Welt" mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Hallo Welt! Mit Spring Boot (Marven + Texteditor)
[Java] Hallo Welt mit Java 14 x Spring Boot 2.3 x JUnit 5 ~
[Spring Boot] Benutzerinformationen mit Rest API abrufen (Anfänger)
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 2).
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 1).
Feder mit Kotorin --4 REST API Design
Implementieren Sie die REST-API mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Erstellen Sie eine REST-API mit Apache2 + Passenger + Sinatra.
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
[Trainieren! ] Zeigen Sie Hello World mit Spring Boot an
Wie Spring Security mit Hello World funktioniert
[Anfänger] Versuchen Sie, die REST-API für die Todo-App mit Spring Boot zu schreiben
Spring Boot2-Webanwendungsentwicklung mit Visual Studio Code Hello World-Erstellung
Hallo Welt mit explosiver Geschwindigkeit mit Spring Initializr! !! !!
Versuchen Sie, Hallo Welt mit Frühling + Gradle anzuzeigen
Erstellen Sie einen Web-API-Server mit Spring Boot
Hallo Welt mit Micronaut
Mit Spring Boot herunterladen
Beispiel für Batch-Prozessdaten in der Datenbank mit Apache Camel Spring Boot-Startern
Die Nachrichtenkooperation begann mit der Spring Boot Apache Kafka Edition
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein
Hallo Welt Vergleich zwischen Spark Framework und Spring Boot
Generieren Sie mit Spring Boot einen Barcode
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Hallo Welt mit VS Code!
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Setzen Sie Cookies mit Spring Boot
REST-API-Test mit REST Assured
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
API mit Spring + Vue.js verknüpfen
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Hallo Welt mit SpringBoot / Gradle
Hallo Welt, mit Asakusa Framework!
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Erstellen Sie eine Hello World-Webanwendung mit Spring Framework + Jetty
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①