クイックJava、春、カフカ&ZooKeeperセットアップ
からのイメージ源
このチュートリアルでは、非常にシンプルかつ迅速な経験を体験します。
要件
割賦
インストールJava 8
$ brew tap adoptopenjdk/openjdk
$ brew cask install adoptopenjdk8
カフカをインストール
$ brew install kafka
第1ターミナルを開き、ZooKeeperを起動する
$ zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
カフカを始めるために第2のターミナルを開けてください
$ kafka-server-start /usr/local/etc/kafka/server.properties
第3ターミナルを開き、カフカトピックを作成します
$ kafka-topics --bootstrap-server localhost:9092 --topic <enter-a-topic> --create --partitions 1 --replication-factor 1
SpringbootでMavenプロジェクトを作成する
Kafkaプロデューサーと消費者を構成してください
application.properties
インsrc/main/resources
フォルダー、およびハイライトを変更しますspring.datasource.url=jdbc:mysql://localhost:3306/<your-db-name>?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC
spring.datasource.username=<your-db-username>
spring.datasource.password=<your-db-password>
app.topic=<same-topic-created-in-terminal>
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.groupId=<any-group-id>
spring.kafka.consumer.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=<any-group-id>
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.producer.bootstrap-servers=localhost:9092
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
kafka-topics --bootstrap-server localhost:9092 --topic <same-topic-in-application.properties> --create --partitions 1 --replication-factor 1
カフカプロデューサー&レシーバー
com.example
, これらのフォルダを作成します$ mkdir controller model repository service
$ touch service/KafkaConsumer.java service/KafkaProducer.java
package <enter-your-package-here>;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class KafkaConsumer {
public static List<String> messages = new ArrayList<>();
private final static String topic = "<same-topic-in-resources>";
private final static String groupId = "<same-group-id>";
@KafkaListener(topics = topic, groupId = groupId)
public void listen(String message) {
messages.add(message);
}
}
package <enter-your-package-here>;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
@Service
public class KafkaProducer {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Value("${app.topic}")
private String topic;
public void produce(String message) {
kafkaTemplate.send(topic, message);
}
}
クリエーターカフカ
$ touch controller/kafkaController.java
を追加します.package server.controller;
import org.springframework.web.bind.annotation.*;
import server.service.KafkaConsumer;
import server.service.KafkaProducer;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@RestController
public class KafkaController {
@Autowired
private KafkaConsumer consumer;
@Autowired
private KafkaProducer producer;
@PostMapping("/send")
public void send(@RequestBody String data) {
producer.produce(data);
}
@GetMapping("/receive")
public List<String> receive() {
return consumer.messages;
}
public KafkaConsumer getConsumer() {
return consumer;
}
public KafkaProducer getProducer() {
return producer;
}
public void setConsumer(KafkaConsumer consumer) {
this.consumer = consumer;
}
public void setProducer(KafkaProducer producer) {
this.producer = producer;
}
}
注意:モデルとリポジトリでも、データベースで設定するために使用しますが、このチュートリアルでは必要ありません.最終プロジェクト構造
テスト
プロデューサーからメッセージを送信する2つの方法があります.
トピックを作成するために使用した3番目の端末を開きます
$ kafka-console-consumer --bootstrap-server localhost:9092 --topic <enter-your-topic> --from-beginning
1 .郵便配達人
ポスト/メソッドを使用してlocalhostを入力します.
{
"message": "Hello from Postman"
}
第2ターミナル
4番目の端末を開き、次のように入力します.
$ kafka-console-producer --broker-list localhost:9092 --topic <enter-your-topic>
> Hello from the terminal
端末をチェックすると、Postmanと端末経由でリアルタイムで送信されたメッセージが表示されます.
完了&おめでとう!
プロデューサーからメッセージを送信する2つの方法があります.
トピックを作成するために使用した3番目の端末を開きます
$ kafka-console-consumer --bootstrap-server localhost:9092 --topic <enter-your-topic> --from-beginning
1 .郵便配達人ポスト/メソッドを使用してlocalhostを入力します.
{
"message": "Hello from Postman"
}
第2ターミナル4番目の端末を開き、次のように入力します.
$ kafka-console-producer --broker-list localhost:9092 --topic <enter-your-topic>
> Hello from the terminal
端末をチェックすると、Postmanと端末経由でリアルタイムで送信されたメッセージが表示されます.完了&おめでとう!
Reference
この問題について(クイックJava、春、カフカ&ZooKeeperセットアップ), 我々は、より多くの情報をここで見つけました https://dev.to/calvinqc/quick-java-spring-kafka-zookeeper-setup-on-macos-3e8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol