[JAVA] Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2

Einführung

Erstellen Sie eine Konsolenanwendung, die jede Sekunde "Hello World" mit der folgenden Kombination ausgibt.

Die REST-API-Edition lautet wie folgt.

Hallo Welt mit Apache Camel + Spring Boot 2 (REST-API)

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 sich das 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 die, mit der Sie eine Verbindung herstellen möchten.

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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>mkyz08.sample</groupId>
	<artifactId>camel-springboot-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>camel-springboot-test</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.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.apache.camel.spring.boot.CamelSpringBootApplicationController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new SpringApplication(Application.class).run(args);
        CamelSpringBootApplicationController applicationController =
                applicationContext.getBean(CamelSpringBootApplicationController.class);
        applicationController.run();
    }

}

Das Folgende ist der Start einer normalen Spring Boot-Anwendung.

ApplicationContext applicationContext = new SpringApplication(Application.class).run(args);

Im Folgenden sind die Unterschiede zum Starten einer normalen Spring Boot-Anwendung aufgeführt.

Sie können die Ausführung als Daemon-Thread fortsetzen, indem Sie die Ausführungsmethode der CamelSpringBootApplicationController-Klasse ausführen. Wenn Sie dies nicht tun, wird die Konsolen-App gestartet und beendet.

        CamelSpringBootApplicationController applicationController =
                applicationContext.getBean(CamelSpringBootApplicationController.class);
        applicationController.run();

Die Einstellungsdatei lautet wie folgt. Durch Setzen von "spring.main.web-application-type = none" wird Tomcat nicht gestartet. "Timer.period" ist eine Anwendungseinstellung und wird als Einstellungswert verwendet, wenn Hello World jede Sekunde angezeigt wird.

src/main/resources/application.properties


camel.springboot.name = MyCamelApp
spring.main.web-application-type=none
timer.period = 1000

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("timer://exampleTimer?period={{timer.period}}")
				.routeId("hello world route")
				.setBody(simple("Hello World at ${header.firedTime}"))
				.to("stream:out");
    }
}

Das Folgende ist der Inhalt der Route

		from("timer://exampleTimer?period={{timer.period}}")
				.routeId("hello world route")
				.setBody(simple("Hello World at ${header.firedTime}"))
				.to("stream:out");

Führen Sie die Hello World-Konsolenanwendung aus

Wenn Sie das erstellte Programm ausführen, wird es wie unten gezeigt an die Konsole ausgegeben.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

2018-12-06 14:59:46.472  INFO 17612 --- [           main] mkyz08.example.Application               : Starting Application on mky-PC with PID 17612 (C:\pleiades\workspace\camel-springboot-test\target\classes started by mky in C:\pleiades\workspace\camel-springboot-test)
2018-12-06 14:59:46.474  INFO 17612 --- [           main] mkyz08.example.Application               : No active profile set, falling back to default profiles: default
2018-12-06 14:59:47.516  INFO 17612 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.apache.camel.spring.boot.CamelAutoConfiguration' of type [org.apache.camel.spring.boot.CamelAutoConfiguration$$EnhancerBySpringCGLIB$$9ed7a086] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-12-06 14:59:47.731  INFO 17612 --- [           main] o.a.c.i.converter.DefaultTypeConverter   : Type converters loaded (core: 195, classpath: 1)
2018-12-06 14:59:48.080  INFO 17612 --- [           main] o.a.camel.spring.boot.RoutesCollector    : Loading additional Camel XML routes from: classpath:camel/*.xml
2018-12-06 14:59:48.080  INFO 17612 --- [           main] o.a.camel.spring.boot.RoutesCollector    : Loading additional Camel XML rests from: classpath:camel-rest/*.xml
2018-12-06 14:59:48.086  INFO 17612 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.23.0 (CamelContext: MyCamelApp) is starting
2018-12-06 14:59:48.086  INFO 17612 --- [           main] o.a.c.m.ManagedManagementStrategy        : JMX is enabled
2018-12-06 14:59:48.274  INFO 17612 --- [           main] o.a.camel.spring.SpringCamelContext      : StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
2018-12-06 14:59:48.385  INFO 17612 --- [           main] o.a.camel.spring.SpringCamelContext      : Route: hello world route started and consuming from: timer://exampleTimer?period=1000
2018-12-06 14:59:48.387  INFO 17612 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 1 routes, of which 1 are started
2018-12-06 14:59:48.390  INFO 17612 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.23.0 (CamelContext: MyCamelApp) started in 0.302 seconds
2018-12-06 14:59:48.394  INFO 17612 --- [           main] mkyz08.example.Application               : Started Application in 2.316 seconds (JVM running for 2.825)
Hello World at Thu Dec 06 14:59:49 JST 2018
Hello World at Thu Dec 06 14:59:50 JST 2018
Hello World at Thu Dec 06 14:59:51 JST 2018

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 "Running Configuration" 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.1.RELEASE:repackage (default-cli) @ camel-springboot-test ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.930 s
[INFO] Finished at: 2018-12-06T13:03:00+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-test-0.0.1-SNAPSHOT.jar

Referenz

Recommended Posts

Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2
Hallo Welt (REST API) 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 + 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 ~
Frühlingsstiefel Hallo Welt in Eclipse
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie eine App mit Spring Boot
Erstellen Sie eine Hello World-Webanwendung mit Spring Framework + Jetty
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
Spring5 MVC-Webanwendungsentwicklung mit Visual Studio-Code Hello World Creation
Schritte zum Erstellen einer einfachen Kamel-App mit Apache Camel Spring Boot-Startern
Erstellen Sie mit Spring Boot eine einfache Such-App
Hallo Welt mit explosiver Geschwindigkeit mit Spring Initializr! !! !!
Versuchen Sie, Hallo Welt mit Frühling + Gradle anzuzeigen
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
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
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
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Hallo Welt mit SpringBoot / Gradle
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Leistungsschaltermuster mit Apache-Kamel
Spring Boot Programmierung mit VS Code
Erstellen Sie eine Anfrage-App mit Spring Boot
Hallo Welt mit Kotlin und JavaFX
Hallo Welt mit Docker und C Sprache
Erhalten Sie Validierungsergebnisse mit Spring Boot
Hallo Welt mit GlassFish 5.1 + Servlet + JSP
Ich habe GraphQL mit Spring Boot ausprobiert
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
"Hallo Welt" für ImageJ mit Eclipse
Ich habe Flyway mit Spring Boot ausprobiert
Hallo Welt mit GWT 2.8.2 und Maven
Die Nachrichtenkooperation begann mit Spring Boot