Aller au contenu principal

FAQ du connecteur RabbitMQ

info

Bêta

Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.

Cette page contient les réponses aux questions fréquemment posées sur le connecteur d'ingestion RabbitMQ géré dans Databricks Lakeflow Connect.

FAQ générale sur les connecteurs gérés

Consultez la FAQ sur les connecteurs gérés pour obtenir les questions fréquemment posées qui s'appliquent à tous les connecteurs gérés Lakeflow Connect. Les éléments suivants sont spécifiques au connecteur RabbitMQ.

FAQ spécifiques au connecteur

Pourquoi est-ce que j'obtiens un délai d'attente de connexion lors de la connexion à RabbitMQ ?

Parmi les causes courantes, citons :

  • Nom d'hôte ou port incorrect : Le hostname ou le port du broker RabbitMQ dans la connexion Unity Catalog est incorrect. Le port par default pour RabbitMQ est 5672.
  • Connectivité réseau : La connectivité réseau du plan de compute Serverless à votre courtier RabbitMQ est bloquée. Vérifiez votre peering Virtual Private Cloud (VPC), votre groupe de sécurité ou vos règles de pare-feu.

Puis-je lire à partir de plusieurs files d'attente RabbitMQ dans un seul pipeline ?

Oui. Définissez une entrée de table par file d'attente dans ingestion_definition.objects. Chaque file d'attente est mappée 1:1 à une table de streaming de destination. Un seul pipeline utilise une connexion Unity Catalog (un courtier RabbitMQ). Pour ingérer à partir de plusieurs courtiers, créez des pipelines distincts.

Comment puis-je surveiller le retard de mon Stream par rapport à la file d'attente ?

Consultez Afficher les métriques de streaming. Signaux clés pour RabbitMQ :

  • Taux d'entrée et vitesse de traitement : vitesse à laquelle le connecteur consomme depuis la file d'attente.
  • Profondeur de la file d’attente côté broker : surveillez cela via votre interface utilisateur de gestion RabbitMQ. Étant donné que les files d’attente classiques RabbitMQ sont basées sur des files d’attente et n’ont pas de décalage rejouable, la profondeur de la file d’attente est l’indicateur de latence faisant autorité.

Pourquoi mon Stream ne renvoie-t-il aucun enregistrement alors que des données existent ?

Parmi les causes courantes, citons :

  • Nom de file d’attente incorrect : vérifiez que vous consommez à partir de la bonne file d’attente.
  • Consommateurs externes concurrents : RabbitMQ délivre chaque message à un seul consommateur. Si un autre consommateur (non-Spark) lit à partir de la même file d'attente, le pipeline pourrait recevoir moins de messages que prévu.
  • Problèmes d'authentification ou d'autorisation : La connexion a peut-être réussi, mais l'utilisateur peut ne pas avoir l'autorisation de consommer à partir de la file d'attente. Vérifiez vos autorisations RabbitMQ (autorisation de lecture sur la file d'attente).
  • Messages déjà consommés et acquittés : Contrairement à Kafka, les files d'attente classiques RabbitMQ ne conservent pas les messages après acquittement. Si un autre consommateur a reconnu les données avant le pipeline start, elles ne peuvent pas être rejouées.

Que se passe-t-il si le pipeline se bloque avant d'accuser réception des messages ?

RabbitMQ garantit la livraison au moins une fois. Si le pipeline tombe en panne ou si un consommateur se déconnecte avant d'envoyer un accusé de réception (ACK), les messages non accusés de réception restent dans la file d'attente et sont de nouveau livrés lors de la reconnexion. La colonne de métadonnées _redelivered est true pour ces messages.

Le connecteur peut-il garantir une livraison exactement une fois ?

Non. Le connecteur RabbitMQ géré fournit une sémantique « au moins une fois ». Les files d'attente classiques de RabbitMQ ne fournissent pas d'ID de message unique attribué par le courtier, de sorte que la déduplication exacte au niveau de la couche du connecteur n'est pas possible. Si vous avez besoin d'un traitement exactement une fois, dédupliquez en aval en utilisant une clé spécifique à l'application (par exemple, un message_id défini par votre producteur, ou une clé métier à l'intérieur du corps du message).

Le connecteur prend-il en charge les RabbitMQ Streams ?

Non. Le connecteur géré prend en charge uniquement les files d'attente classiques de RabbitMQ. Les RabbitMQ Stream utilisent un modèle différent, basé sur le décalage.