Description du problème
Lorsque vous activez la fonctionnalité d'idempotence, le client reçoit le message d'erreur Cluster authorization failed lors de l'envoi de messages.
Causes
Vous utilisez un topic reposant sur le stockage cloud. Ce type de topic ne prend pas en charge l'idempotence.
La permission
IDEMPOTENT_WRITEau niveau du cluster n'a pas été accordée à l'expéditeur des messages. Si vous utilisez un topic avec stockage local et que vous activez les listes de contrôle d'accès (ACL), le broker ApsaraMQ for Kafka vérifie automatiquement si l'expéditeur dispose de la permission IDEMPOTENT_WRITE sur le cluster. En l'absence de cette autorisation, l'envoi du message échoue.
Solutions
-
Les topics utilisant le stockage cloud pour les ne prennent pas en charge l'idempotence. Désactivez cette fonctionnalité en définissant le paramètre
enable.idempotence=falsesur le producteur.RemarqueL'idempotence est activée par défaut pour les clients ApsaraMQ for Kafka dont la version est égale ou supérieure à 3,0. Le paramètre
enable.idempotenceest alors automatiquement défini sur true. Accordez les permissions ACL nécessaires au niveau du cluster. Sur la page de gestion des permissions SASL dans la console, utilisez la boîte de dialogue Add Permission pour configurer les paramètres : spécifiez l'utilisateur, définissez Resource Type sur Cluster, définissez Matching Method sur Exact Match et sélectionnez IDEMPOTENT_WRITE comme Operation Type. Pour plus d'informations, consultez la rubrique Utiliser les ACL pour le contrôle d'accès.