Источник изображения с Cloudkarafka
В этом учебном пособии/лабораторной работе вы испытаете очень простой и быстрый практический опыт с:
- Ява
- Пружинный ботинок
- Апач Кафка
- Смотритель зоопарка
- Домашнее пиво
- Тестирование с Почтальоном . Чтобы узнать больше, вы можете посмотреть это видео .
- Понимание основной концепции Кафки
- Установите 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
$ kafka-server-start /usr/local/etc/kafka/server.properties
- Откройте 3-й терминал, чтобы создать тему Кафки
$ kafka-topics --bootstrap-server localhost:9092 --topic--create --partitions 1 --replication-factor 1
- Открыть start.spring.io
- Выберите Весенний веб & Весна для Apache Кафки зависимости
- Откройте свой проект в IDE (я предпочитаю использовать IntelliJ)
- Добавьте это в
application.propertiesвsrc/main/ресурсыпапку и измените основные моменты:
spring.datasource.url=jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC spring.datasource.username= spring.datasource.password= app.topic= spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.groupId= spring.kafka.consumer.bootstrap-servers=localhost:9092 spring.kafka.consumer.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--create --partitions 1 --replication-factor 1
- Внутри пакета
com.примерсоздайте следующие папки:$mkdir служба репозитория моделей контроллеров - Создание служб производителя и получателя:
$touch service/KafkaConsumer.java service/KafkaProducer.java - Добавьте это в KafkaConsumer:
package; 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 messages = new ArrayList<>(); private final static String topic = " "; private final static String groupId = " "; @KafkaListener(topics = topic, groupId = groupId) public void listen(String message) { messages.add(message); } }
- Добавьте этот код в KafkaProducer:
package; 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 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 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--from-beginning
1. Почтальон
Используйте POST/ метод и введите localhost:8080/отправить с телом JSON:
{
"message": "Hello from Postman"
}
2. Терминал Откройте 4-й терминал, и введите:
$ kafka-console-producer --broker-list localhost:9092 --topic> Hello from the terminal
Проверьте терминал, вы увидите сообщение, которое вы отправили через почтальона и терминал в режиме реального времени.
Готово и поздравляю!
Оригинал: “https://dev.to/calvinqc/quick-java-spring-kafka-zookeeper-setup-on-macos-3e8”