[JAVA] Hello World (application console) avec Apache Camel + Spring Boot 2

introduction

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)

Qu'est-ce qu'Apache Camel?

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.

Créer un projet dans Eclipse

Commencez par créer un nouveau projet Maven. Sélectionnez "Projet Maven" et cliquez sur "Suivant".

image.png

"Suivant" sans aucun changement particulier.

image.png

Sélectionnez "maven-arche type-quickstart" et cliquez sur "Suivant".

image.png

Entrez les informations du projet et cliquez sur "Terminer".

image.png

Ceci termine la création du projet.

Modifier pom.xml

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éer un programme

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");

Exécutez l'application console Hello World

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

Créer un fichier jar exécutable

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.

image.png

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

référence

Recommended Posts

Hello World (application console) avec Apache Camel + Spring Boot 2
Hello World (API REST) avec Apache Camel + Spring Boot 2
Hello World avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Hello World avec Spring Boot
Jusqu'à "Hello World" avec Spring Boot
(IntelliJ + gradle) Hello World avec Spring Boot
Bonjour tout le monde! Avec Spring Boot (Marven + éditeur de texte)
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
Spring Boot Hello World dans Eclipse
Créez une application avec Spring Boot 2
Créez une application avec Spring Boot
Créez une application Web Hello World avec Spring Framework + Jetty
Comparez Hello, world! Avec Spring Boot avec Java, Kotlin et Groovy
[Entraine toi! ] Affichez Hello World avec Spring Boot
Comment Spring Security fonctionne avec Hello World
Développement d'applications Web Spring5 MVC avec Visual Studio Code Hello World Creation
Étapes pour créer une application chameau simple avec les démarreurs Apache Camel Spring Boot
Créez une application de recherche simple avec Spring Boot
Hello World à une vitesse explosive avec Spring Initializr! !! !!
Essayez d'afficher Hello World avec Spring + Gradle
Hello World avec Micronaut
Télécharger avec Spring Boot
Exemple de traitement par lots de données sur DB avec des démarreurs Apache Camel Spring Boot
La coopération des messages a commencé avec l'édition Spring Boot Apache Kafka
Créer Restapi avec Spring Boot (jusqu'à l'exécution de l'application)
Comparaison Hello World entre Spark Framework et Spring Boot
Générer un code à barres avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Bonjour tout le monde avec VS Code!
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Spring Boot à partir de Docker
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Hello World avec SpringBoot / Gradle
Utiliser l'authentification de base avec Spring Boot
gRPC sur Spring Boot avec grpc-spring-boot-starter
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Modèle de disjoncteur avec Apache Camel
Programmation Spring Boot avec VS Code
Créer une application d'enquête avec Spring Boot
Bonjour tout le monde avec Kotlin et JavaFX
Hello World avec Docker et langage C
Obtenez des résultats de validation avec Spring Boot
Hello World avec GlassFish 5.1 + Servlet + JSP
J'ai essayé GraphQL avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
"Hello world" pour ImageJ avec Eclipse
J'ai essayé Flyway avec Spring Boot
Hello World avec GWT 2.8.2 et Maven
La coopération des messages a commencé avec Spring Boot