Тайм-ауты производителя Kafka в WSO2 ESB - PullRequest
0 голосов
/ 06 ноября 2019

Мы получаем ниже исключения с Kafka 2.11 и wso2 esb 6.2 с включенным sasl. Механизм SASL в wso2 esb и Kafka clsuter является PALIN, но случайным образом видит ошибку 2 в журналах.

Кто-нибудь сталкивался с этой ошибкой, и любая помощь приветствуется.

Ошибка 1: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Истекает 1 запись (s) для TESTTOPIC: 30051 мс прошло с момента создания пакета плюс время ожидания

Ошибка 2: [2019-11-02 01: 36: 50,265] ОШИБКА - [Producer clientId = provider-4526] Соединение с узлом -1 ошибка аутентификации из-за: неожиданного запроса на квитирование с клиентским механизмом PLAIN, включенными механизмами являются [GSSAPI] {org.apache.kafka.clients.NetworkClient}

1 Ответ

0 голосов
/ 06 ноября 2019

На основании второго сообщения об ошибке *Unexpected handshake request with client mechanism PLAIN, enabled mechanisms are [GSSAPI]* может показаться, что механизм saslMechanism не был настроен должным образом на стороне ESB. По умолчанию он настроен на GSSAPI Kerberos.

Я бы порекомендовал получить последнюю версию Kafka Connector. Вы можете найти документацию и соответствующие ссылки здесь

Один из таких примеров конфигурации PLAIN с разъемом Kafka:

<kafkaTransport.init>
        <bootstrapServers>localhost:9092</bootstrapServers>
        <keySerializerClass>org.apache.kafka.common.serialization.StringSerializer</keySerializerClass>
        <valueSerializerClass>org.apache.kafka.common.serialization.StringSerializer</valueSerializerClass>
        <securityProtocol> SASL_PLAINTEXT </securityProtocol>
        <saslMechanism> PLAIN </saslMechanism>
        <saslJaasConfig>org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="12345"</saslJaasConfig>
        <maxPoolSize>100</maxPoolSize>
</kafkaTransport.init>

Это соответствующая конфигурациятребуется использовать коннектор Kafka. Протокол безопасности также может быть настроен на SASL_SSL.

Вот одна из таких настроек прокси.

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="KafkaTransport"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="http,https">
   <target>
      <inSequence>
         <kafkaTransport.init>
            <bootstrapServers>localhost:9092</bootstrapServers>
            <keySerializerClass>org.apache.kafka.common.serialization.StringSerializer</keySerializerClass>
            <valueSerializerClass>org.apache.kafka.common.serialization.StringSerializer</valueSerializerClass>
            <securityProtocol>SASL_SSL</securityProtocol>
            <saslMechanism>PLAIN</saslMechanism>

            <sslKeystoreLocation>/Users/Ibaqu/kafka.client.keystore.jks</sslKeystoreLocation>
            <sslKeystorePassword>admin123</sslKeystorePassword>

            <sslTruststoreLocation>/Users/Ibaqu/kafka.client.trustore.jks</sslTruststoreLocation>
            <sslTruststorePassword>admin123</sslTruststorePassword>
            <saslJaasConfig>org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="12345";</saslJaasConfig>
            <maxPoolSize>100</maxPoolSize>
         </kafkaTransport.init>
         <kafkaTransport.publishMessages>
            <topic>test</topic>
         </kafkaTransport.publishMessages>
      </inSequence>
   </target>
   <description/>
</proxy>

. Вы можете попробовать этот конкретный прокси-сервер для проверки вашего соединения.

...