Рубрики
Без рубрики

Быстрая настройка Java, Spring, Kafka и Zookeeper на macOS

Источник изображения с Cloudkarafka В этом учебном пособии/лабораторной работе вы испытаете очень простой ответ… С тегами учебник, java, кафка, веб-разработчик.

Источник изображения с Cloudkarafka

В этом учебном пособии/лабораторной работе вы испытаете очень простой и быстрый практический опыт с:

  1. Ява
  2. Пружинный ботинок
  3. Апач Кафка
  4. Смотритель зоопарка
  1. Установите Java 8
$ brew tap adoptopenjdk/openjdk
$ brew cask install adoptopenjdk8
  1. Установить Кафку
$ brew install kafka
  1. Откройте 1-й терминал, чтобы запустить Zookeeper
$ zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
  1. Откройте 2-й терминал , чтобы запустить Kafka
$ kafka-server-start /usr/local/etc/kafka/server.properties
  1. Откройте 3-й терминал, чтобы создать тему Кафки
$ kafka-topics --bootstrap-server localhost:9092 --topic  --create --partitions 1 --replication-factor 1
  1. Открыть start.spring.io
  2. Выберите Весенний веб & Весна для Apache Кафки зависимости
  3. Откройте свой проект в 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
  1. Внутри пакета com.пример создайте следующие папки: $mkdir служба репозитория моделей контроллеров
  2. Создание служб производителя и получателя: $touch service/KafkaConsumer.java service/KafkaProducer.java
  3. Добавьте это в 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”