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)
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 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/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 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");
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
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.
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
Recommended Posts