Установка 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.dll
- Path— короткий путь к файлам 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
