[JAVA] Die Nachrichtenkooperation begann mit der Spring Boot Apache Kafka Edition

Inhaltsverzeichnis

  1. Synopse bis zum letzten Mal
  2. Zweck des Artikels
  3. Vorausgesetzte Umgebung
  4. Erstellen Sie eine Messaging-Plattform (Kafka Edition)
  5. Erstellen Sie Sink, Source, Processor (Kafka Edition)
  6. Funktionsprüfung
  7. Zusammenfassung

Synopse bis zum letzten Mal

Wir haben den ersten Schritt beim Entwerfen und Implementieren eines nachrichtengesteuerten Systems unternommen. Nachrichtenverknüpfung mit Spring Boot gestartet

Zweck des Artikels

Machen wir den zweiten Schritt.

Während Sie leicht vom Nachrichtenfahren profitieren können RabbitMQ kann nicht als Cluster konfiguriert werden Es scheint, dass die obere Skalierungsgrenze und die Gewährleistung der Fehlertoleranz auf Knotenebene Apache Kafka unterlegen sind.

Lassen Sie uns auch Apache Kafka berühren.

Der vollständige Code lautet hier. Obwohl im Artikel nicht erklärt, wird es mit einer Testklasse geliefert.

Voraussetzung Umgebung

Ich werde Docker diesmal nicht verwenden. Andere sind die gleichen wie beim letzten Mal, daher werden Versionsinformationen weggelassen.

Erstellen Sie eine Messaging-Plattform (Kafka Edition)

Wie oben erwähnt, wird Apache Kafka adoptiert.

Da Schnellstart auf der offiziellen Website von Apache Kafka veröffentlicht ist Befolgen Sie diese Prozedur, um zu installieren.

Rufen Sie zunächst den HTTP-Link von [Apache Kafka-Verteilungsseite] ab (https://www.apache.org/dyn/closer.cgi?path=0kafka/2.3.0/kafka_2.12-2.3.0.tgz).

Eine Seitenstruktur, in der sich die vorgeschlagene URL bei jedem Zugriff ändert. Notieren Sie sich die unter "Wir empfehlen ~" angezeigte URL, es sei denn, Sie haben einen bestimmten Grund. Lassen Sie uns mit der Lastverteilung zusammenarbeiten.

Bitte beachten Sie Folgendes. Screenshot, wenn meisei-u.ac.jp vorgeschlagen wird. スクリーンショット 2019-12-07 22.34.10.png

Entpacken Sie anschließend die heruntergeladene Datei und verschieben Sie sie in einen niedrigeren Ordner.

# wget [kafka.URL von tgz]
# cd [Ordner nach der Dekomprimierung]

Geben Sie den Startbefehl ein. Zunächst einmal ZooKeeper.

# bin/zookeeper-server-start.sh config/zookeeper.properties

Als nächstes kommt Kafka selbst.

# bin/kafka-server-start.sh config/server.properties

Lassen Sie uns die Operation ein wenig überprüfen. Erstellen Sie ein Thema (Nachrichtenziel) mit dem Namen test.

# bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

Zeigen Sie die Themenliste an. Bestätigen Sie, dass das Thema erstellt wurde.

# bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test

Mit den bisherigen Schritten ist Kafka bereit, Ihre Nachricht zu verarbeiten.

Waschbecken, Quelle, Prozessor erstellen (Kafka Edition)

Verwenden Sie Spring Cloud Stream wie zuvor Ich werde Waschbecken, Quelle und Prozessor machen ... Keine Änderung in einer Zeile des Implementierungscodes. Der Unit-Test ist auch die gleiche Quelle.

Der vorherige Code lautet hier. Der Code für diese Zeit lautet hier.

Nur pom.xml wird geändert. RabbitMQ wurde entfernt und Apache Kafka wurde hinzugefügt. Wenn Sie die fertige pom.xml mit der vorherigen vergleichen, können Sie sie sehen, sodass ich die Details weglassen werde.

Die wichtigsten Änderungen sind: Der Leitfaden ist hier.

(Unterlassung)
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-stream-binder-kafka</artifactId>
		</dependency>
(Unterlassung)

Da in der App kein Eigenschaftswert festgelegt ist Der Punkt ist, dass die Verbindungszielinformationen (localhost: 9092) zu kafka und verschiedene Parameter basierend auf der Standardeinstellung festgelegt werden.

Funktionsprüfung

Führen Sie für jedes Projekt ein Maven Clean-Paket aus. Starten Sie jedes unter dem Ziel erzeugte Glas wie folgt.

$ java -jar target/hello-source-kafka-0.0.1-SNAPSHOT.jar --server.port=8080
$ java -jar target/hello-sink-kafka-0.0.1-SNAPSHOT.jar  --server.port=8082
$ java -jar target/hello-processor-kafka-0.0.1-SNAPSHOT.jar --server.port=8090

Im Startprotokoll wird angezeigt, dass Kafka verwendet wird. Das Folgende ist ein Beispiel für die Sink-Protokollausgabe.

2019-12-07 12:45:28.595  INFO 4986 --- [           main] o.s.c.s.b.k.p.KafkaTopicProvisioner      : Using kafka topic for outbound: hello-sink
2019-12-07 12:45:28.600  INFO 4986 --- [           main] o.a.k.clients.admin.AdminClientConfig    : AdminClientConfig values: 
	bootstrap.servers = [localhost:9092]
(Unterlassung)
	ssl.truststore.type = JKS
2019-12-07 12:45:28.707  INFO 4986 --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka version: 2.3.1
2019-12-07 12:45:28.709  INFO 4986 --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka commitId: 18a913733fb71c01
2019-12-07 12:45:28.710  INFO 4986 --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka startTimeMs: 1575722728705

Senden Sie eine POST-Anfrage mit Curl an Source.

$ curl -v localhost:8080 -d '{"tweet":"Hello"}' -H 'Content-Type: application/json'

Eine Nachricht wird an die Konsole ausgegeben, die Sink's Jar gestartet hat.

Received Hello processing!

Zusammenfassung

Verwenden von Spring Boot, Apache Kafka und Spring Cloud Stream Ich habe gelernt, wie man eine Microservice-Nachrichtenverknüpfung entwirft / implementiert.

Mit Spring Cloud Stream Die Abhängigkeit von der Messaging-Infrastruktur kann vom App-Design und der Implementierung entfernt werden.

Bitte spielen Sie mit jeder Messaging-Plattform, indem Sie sie austauschen.

Verweise

Spring Cloud Stream Kafka Binder Reference Guide

Apache Kafka QuickStart

Versuchen Sie es mit Apache Kafka

Recommended Posts

Die Nachrichtenkooperation begann mit der Spring Boot Apache Kafka Edition
Die Nachrichtenkooperation begann mit Spring Boot
Beginnen Sie mit Spring Boot
Erste Schritte mit Spring Boot
Mit Spring Boot herunterladen
Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
Hallo Welt (Konsolen-App) mit Apache Camel + Spring Boot 2
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Greifen Sie mit Micronaut auf Apache Kafka zu
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Ändern Sie die Spring Boot-Validierungsnachricht
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Nachricht erlöschen (Spring Boot)
Erhalten Sie Validierungsergebnisse mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
(IntelliJ + gradle) Hallo Welt mit Spring Boot
So teilen Sie eine Spring Boot-Nachrichtendatei
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
Formularklassenvalidierungstest mit Spring Boot