Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo fornisce suggerimenti per la risoluzione dei problemi che possono verificarsi quando si usano Hub eventi per Apache Kafka.
Eccezione server occupato
È possibile che vengano visualizzate le metriche ThrottledRequests a causa della limitazione Kafka. Con i client AMQP, Hub eventi restituisce immediatamente un'eccezione del server occupato alla limitazione delle richieste del servizio. Equivale a un messaggio "riprova più tardi". In Kafka, i messaggi in arrivo subiscono un ritardo prima di essere riconosciuti, mentre i messaggi in uscita subiscono un ritardo nella consegna. La lunghezza del ritardo viene restituita in millisecondi come throttle_time_ms nella risposta di produzione/recupero. Nella maggior parte dei casi, queste richieste ritardate non vengono registrate come metriche ThrottledRequests nei dashboard di Hub eventi. Al contrario, il valore throttle_time_ms della risposta deve essere usato come indicatore che la velocità effettiva ha superato la quota di cui è stato effettuato il provisioning.
Se il traffico è eccessivo, il servizio ha il comportamento seguente:
- Se il ritardo della richiesta di produzione supera il timeout della richiesta (request.timeout.ms), Event Hubs restituisce il codice di errore Violazione delle politiche.
- Se il ritardo della richiesta di recupero supera il timeout della richiesta, Event Hubs registra la richiesta come soggetta a limitazione e risponde con un insieme di record vuoto senza alcun codice di errore.
Nessun record ricevuto
È possibile che i consumer non ottengano record e ribilancino costantemente. In questo scenario, i consumer non ottengono record e ribilanciano costantemente. Non si verificano eccezioni o errori, ma i log Kafka mostrano che i consumer stanno tentando di ricongiungersi al gruppo e assegnare partizioni. Esistono alcune possibili cause:
- Assicurarsi che
request.timeout.mssia almeno il valore consigliato di 60000 e chesession.timeout.mssia almeno il valore consigliato di 30000. Avere queste impostazioni troppo basse potrebbe causare timeout del consumer, che causano quindi ribilanciamenti (che causano più timeout, che causano un maggiore ribilanciamento e così via) - Se la configurazione corrisponde a questi valori consigliati e si sta ancora visualizzando un ribilanciamento costante, è possibile aprire un problema (assicurarsi di includere l'intera configurazione nel problema in modo da consentire il debug).
Problema di versione del formato di messaggio/compressione
Hub eventi per Kafka attualmente supporta solo l'algoritmo di compressione gzip. Se viene usato un altro algoritmo, le applicazioni client visualizzano un errore di versione in formato messaggio , ad esempio The message format version on the broker does not support the request..
Se è necessario usare un algoritmo di compressione non supportato, una soluzione alternativa valida consiste nel comprimere i dati con tale algoritmo specifico prima di inviarli ai broker e decomprimerli dopo la ricezione. Il corpo del messaggio è solo una matrice di byte per il servizio, quindi la compressione/decompressione lato client non causerà problemi.
UnknownServerException
È possibile ricevere un'eccezione UnknownServerException dalle librerie client Kafka simili all'esempio seguente:
org.apache.kafka.common.errors.UnknownServerException: The server experienced an unexpected error when processing the request
Aprire un ticket con il supporto tecnico Microsoft. La registrazione a livello di debug e i timestamp delle eccezioni in formato UTC sono utili per il debug del problema.
Altri problemi
Controllare gli elementi seguenti se vengono visualizzati problemi durante l'uso di Kafka in Hub eventi.
- Firewall che blocca il traffico: assicurarsi che la porta 9093 non sia bloccata dal firewall.
- TopicAuthorizationException: le cause più comuni di questa eccezione sono:
- Errore di battitura nella stringa di connessione nel file di configurazione o
- Tentativo di usare Hub eventi per Kafka in uno spazio dei nomi di livello Basic. La funzionalità Hub eventi per Kafka non è supportata nel livello Basic.
- Mancata corrispondenza della versione di Kafka: Hub eventi per gli ecosistemi Kafka supporta le versioni Kafka 1.0 e successive. Alcune applicazioni che usano Kafka versione 0.10 e successive potrebbero occasionalmente funzionare a causa della compatibilità con le versioni precedenti del protocollo Kafka, ma è consigliabile non usare le versioni precedenti dell'API. Le versioni kafka 0.9 e precedenti non supportano i protocolli SASL necessari e non possono connettersi a Hub eventi.
- Codifiche strane nelle intestazioni AMQP quando si usano con Kafka: quando si inviano eventi a un hub eventi tramite AMQP, tutte le intestazioni del payload AMQP vengono serializzate nella codifica AMQP. I consumer Kafka non deserializzano le intestazioni da AMQP. Per leggere i valori di intestazione, decodificare manualmente le intestazioni AMQP. In alternativa, è possibile evitare di usare le intestazioni AMQP se si sa che si utilizza il protocollo Kafka. Per altre informazioni, vedere questo problema in GitHub.
- Autenticazione SASL: ottenere il framework per collaborare con il protocollo di autenticazione SASL richiesto da Hub eventi può essere più difficile di quanto sembri. Verificare se è possibile risolvere i problemi di configurazione usando le risorse del framework nell'autenticazione SASL.
Limiti
Apache Kafka e Hub eventi Kafka. Per la maggior parte, l'interfaccia Kafka di Hub eventi di Azure offre le stesse impostazioni predefinite e proprietà, nonché i medesimi codici di errore e comportamento generale di Apache Kafka. I casi in cui questi due differiscono esplicitamente (o dove Event Hubs impone un limite che Kafka non ha) sono elencati di seguito:
- La lunghezza massima della proprietà
group.idè di 256 caratteri - La dimensione massima di
offset.metadata.max.bytesè 1.024 byte - I commit di offset sono limitati a 2 chiamate al secondo per partizione con dimensioni massime del log interno pari a 1 MB
Passaggi successivi
Per altre informazioni su Hub eventi e Hub eventi per Kafka, vedere gli articoli seguenti: