У меня проблемы с подключением к topi c в облаке Confluent из приложения Springboot kafka-streams, соединение обрывается с одной строкой ошибки org.apache.kafka.common.errors.TransactionalIdAuthorizationException: Transactional Id authorization failed.
org.apache.kafka.common.errors.TransactionalIdAuthorizationException: Transactional Id authorization failed.
Я полагаю, что это потому, что topi c настроен для разрешения транзакций с указанным транзакционным идентификатором (https://docs.confluent.io/current/kafka/authorization.html#enabling -authorization-for-idempotent-and-Transactionsal-apis ). Мой сервис, являющийся потоковым приложением, генерирует идентификатор транзакции в каждом StreamThread (метод создания источника в https://github.com/apache/kafka/blob/2.4.1/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamThread.java), который определен как applicationId + "-" + taskId, и он не совпадает с определенным в topi c ACL.
applicationId + "-" + taskId
Это правильно, и если да, то есть ли обходной путь?
Вам нужно будет использовать подстановочные ACL, указав только префикс ie, <application.id>- для соответствующего ACL, используя --resource-pattern-type prefixed
<application.id>-
--resource-pattern-type prefixed
Cf. https://docs.confluent.io/current/streams/developer-guide/security.html