Créez une application console qui génère "Hello World" toutes les secondes avec la combinaison suivante.
L'édition de l'API REST est la suivante.
Hello World avec Apache Camel + Spring Boot 2 (API REST)
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.
Commencez par créer un nouveau projet Maven. Sélectionnez "Projet Maven" et cliquez sur "Suivant".
"Suivant" sans aucun changement particulier.
Sélectionnez "maven-arche type-quickstart" et cliquez sur "Suivant".
Entrez les informations du projet et cliquez sur "Terminer".
Ceci termine la création du projet.
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/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>
Créez le programme principal comme suit.
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();
}
}
Ce qui suit est le lancement d'une application Spring Boot normale.
ApplicationContext applicationContext = new SpringApplication(Application.class).run(args);
Voici les différences par rapport au lancement d'une application Spring Boot normale.
Vous pouvez continuer à s'exécuter en tant que thread démon en exécutant la méthode run de la classe CamelSpringBootApplicationController. Si vous ne le faites pas, l'application console démarre et se ferme.
CamelSpringBootApplicationController applicationController =
applicationContext.getBean(CamelSpringBootApplicationController.class);
applicationController.run();
Le fichier de réglage est le suivant. En définissant "spring.main.web-application-type = none", Tomcat ne démarrera pas. "Timer.period" est un paramètre d'application et est utilisé comme valeur de paramètre lorsque Hello World est affiché toutes les secondes.
src/main/resources/application.properties
camel.springboot.name = MyCamelApp
spring.main.web-application-type=none
timer.period = 1000
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("timer://exampleTimer?period={{timer.period}}")
.routeId("hello world route")
.setBody(simple("Hello World at ${header.firedTime}"))
.to("stream:out");
}
}
Ce qui suit est le contenu de l'itinéraire
--Définissez une minuterie à exécuter toutes les secondes dans "timer: // exampleTimer? Period = {{timer.period}}"
from("timer://exampleTimer?period={{timer.period}}")
.routeId("hello world route")
.setBody(simple("Hello World at ${header.firedTime}"))
.to("stream:out");
Lorsque vous exécutez le programme créé, il sera sorti sur la console comme indiqué ci-dessous.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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
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.
Si l'exécution réussit, le journal suivant sera généré.
[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] ------------------------------------------------------------------------
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-test-0.0.1-SNAPSHOT.jar
Recommended Posts