Установка описана в https://www.dmosk.ru/miniinstruktions.php?mini=kafka-linux.
Дистрибутив Kafka: https://downloads.apache.org/kafka/
Скачать https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz
$ cd ~/tools $ mkdir ~/tools/kafka $ cd ~/tools/kafka ~/tools/kafka$ wget https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz ~/tools/kafka$ tar zxf kafka_*.tgz --strip 1 ~/tools/kafka$ ll total 111400 drwxrwxr-x 7 vasi vasi 4096 Oct 2 16:55 ./ drwxrwxr-x 7 vasi vasi 4096 Oct 2 16:47 ../ drwxr-xr-x 3 vasi vasi 4096 Mar 28 2024 bin/ drwxr-xr-x 3 vasi vasi 4096 Mar 28 2024 config/ -rw-rw-r-- 1 vasi vasi 113986658 Apr 4 21:47 kafka_2.12-3.6.2.tgz drwxr-xr-x 2 vasi vasi 12288 Oct 2 16:55 libs/ -rw-r--r-- 1 vasi vasi 15165 Mar 28 2024 LICENSE drwxr-xr-x 2 vasi vasi 4096 Mar 28 2024 licenses/ -rw-r--r-- 1 vasi vasi 28184 Mar 28 2024 NOTICE drwxr-xr-x 2 vasi vasi 4096 Mar 28 2024 site-docs/
В config/server.properties добавим строку (для разрешения удаления темы):
delete.topic.enable = true
Файл запуска сервиса zookeeper (/etc/systemd/system/zookeeper.service):
[Unit] Description=Zookeeper Service Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=kafka ExecStart=/home/vasi/tools/kafka/bin/zookeeper-server-start.sh /home/vasi/tools/kafka/config/zookeeper.properties ExecStop=/home/vasi/tools/kafka/bin/zookeeper-server-stop.sh ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
Файл запуска сервиса kafka (/etc/systemd/system/kafka.service):
[Unit] Description=Kafka Service Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /home/vasi/tools/kafka/config/server.properties > /home/vasi/tools/kafka/kafka.log 2>&1' ExecStop=/home/vasi/tools/kafka/bin/kafka-server-stop.sh ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
Перечитать сервисы:
$ systemctl daemon-reload
И запустить:
$ systemctl enable zookeeper kafka
Проверить, что сервис запустился и работает на порту 9092:
$ ss -tunlp | grep :9092 tcp LISTEN 0 50 *:9092 *:* users:(("java",pid=9324,fd=153))
Проверка отправки сообщения. Создание топика:
$ /home/vasi/tools/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic Test
Оправка сообщения:
$ echo "Hello, World from Kafka" | /home/vasi/tools/kafka/bin/kafka-console-producer.sh --broker-list 192.168.1.20:9092 --topic Test
Прием сообщения:
$ /home/vasi/tools/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.20:9092 --topic Test --from-beginning
С удаленной машины тоже работает.
Ссылки:
Простой producer на Java https://github.com/cherepakhin/kafka-producer.
Прием сообщения с Java и Camel https://github.com/cherepakhin/camel_kafka_consumer_extdto.
Простой проект на Kotlin и Spring Boot для отправки сообщений в очередь Kafka https://github.com/cherepakhin/shop_kafka_producer.
Простой проект на Kotlin и Spring Boot для приема сообщений из очереди Kafka https://github.com/cherepakhin/shop_kafka_consumer.
Передатчик из kafka в Elasticsearch https://github.com/cherepakhin/kafka-to-es.
В проекте https://github.com/cherepakhin/camel_kafka_consumer_extdto проведены нагрузочные испытания с помощью yandex-tank.
В https://v.perm.ru/index.php/instrumenty-devops/ui-dla-kafka рассмотрена работа с UI интрументами Kafka.