Установка Kafka в ОС Windows и подключение к Comindware Business Application Platform
Введение
Для обмена данными между Comindware Business Application Platform и внешними системами (а также для работы обсуждений) необходимо настроить подключение к брокеру сообщений Kafka.
Здесь представлена инструкция по установке Kafka в ОС Windows с использованием KRaft (без использования Zookeeper) и подключению Kafka к Comindware Business Application Platform.
Предварительные условия
Должно быть установлено ПО Java и заданы следующие системные переменные:
JAVA_HOME— путь к исполняемым файлам Open JDK, напримерC:\Program Files\jdk\jdk-<version>JAVA_HOME_DLL— путь к DLL-файлу Open JDK, напримерC:\Program Files\jdk\jdk-<version>\bin\server\jvm.dllPath— короткий путь к файлам Java:%JAVA_HOME%\bin
Процесс установки
-
Скачайте последнюю версию Kafka с официального сайта.
Внимание!
Для корректной работы Kafka рекомендуется скачивать архив с бинарными файлами.
-
Распакуйте файлы архива, например в папку
C:\kafka\kafkaВнимание!
Рекомендуется использовать путь минимальной длины и названия папок без пробелов, иначе некоторые команды могут не сработать.
-
Создайте папку для журналов, например
X:\kafka\logs.Внимание!
Рекомендуется создавать папку для журналов на отдельном диске, а не на диске где установлено ПО Kafka.
-
Откройте файл конфигурации Kafka
C:\kafka\kafka\config\kraft\server.properties. -
Отредактируйте файл конфигурации, указав IP-адрес сервера Kafka и папку для журналов. При указании пути к папке журналов используйте косую черту
/:process.roles=broker,controllernode.id=1# Укажите IP-адрес сервера Kafkacontroller.quorum.voters=1@10.9.8.7:9093# Укажите IP-адрес сервера Kafkalisteners=PLAINTEXT://10.9.8.7:9092,CONTROLLER://10.9.8.7:9093inter.broker.listener.name=PLAINTEXT# Укажите IP-адрес сервера Kafkaadvertised.listeners=PLAINTEXT://10.9.8.7:9092controller.listener.names=CONTROLLERlistener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSLnum.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600# Укажите путь к папке журналовlog.dirs=X:/kafka/logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000 -
Откройте PowerShell от имени администратора и выполните команды:
cd "C:\kafka\kafka\bin\windows\".\kafka-storage.bat random-uuid -
Kafka выдаст UID, например,
kNZtrWDsRvW0udJeaEahsg -
Используйте полученный UID в следующей команде:
.\kafka-storage.bat format -t kNZtrWDsRvW0udJeaEahsg -c C:\kafka\kafka\config\kraft\server.properties -
Загрузите с официального сайта архив NSSM и распакуйте его.
- В папке
\win64найдите файлnssm.exeи скопируйте его в папкуC:\kafka\kafka\bin\windows\. -
В PowerShell от имени администратора выполните следующую команду:
.\nssm install kafka -
Запустится программа
NSSM service installer.

-
Укажите следующие пути к файлам службы Kafka:
- Path
C:\kafka\kafka\bin\windows\kafka-server-start.bat- Startup directory
C:\kafka\kafka\bin\windows\- Arguments
C:\kafka\kafka\config\kraft\server.properties -
Нажмите кнопку «Install service».
- Произойдёт установка сервиса.
-
По завершении установки откройте программу «Службы» (Services) и найдите в списке
kafka.
Kafka в списке служб -
С помощью свойств службы включите и настройте автоматический перезапуск Kafka.
Окно настройки службы Kafka -
Протестируйте работу Kafka, выполнив в PowerShell следующие команды:
cd "C:\kafka\kafka\bin\windows\".\kafka-console-producer.bat --bootstrap-server 10.9.8.7:9092 --topic TEST# Отправьте любое сообщение, например:hello -
При правильной работе Kafka выдаст предупреждение, что раннее такой ветки сообщений не было, и создаст её.
Создание ветки сообщений Kafka в powershell.exe
Подключение Kafka к Comindware Business Application Platform
-
Откройте папку
C:\ProgramData\comindware\configs\instance -
Откройте файл с именем экземпляра ПО
.ymlи измените или добавьте следующую директиву:# Укажите IP-адрес сервера Kafkamq.server: 10.9.8.7:9092# Укажите имя экземпляра ПОmq.name: <instanceName> -
Удалите следующую строку из файла
.yml:kafkaBootstrapServer: -
Перезапустите экземпляр ПО с помощью Утилиты администрирования.
-
Проверьте соединение с Kafka в браузере по ссылке:
<instanceName>/async