Pular para o conteúdo principal

FAQs do conector RabbitMQ

info

Beta

Este recurso está em Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.

Esta página contém respostas para perguntas frequentes sobre o conector de ingestão do RabbitMQ gerenciado no Databricks LakeFlow Connect.

Perguntas Frequentes gerais sobre conectores gerenciados​

Consulte Perguntas frequentes sobre conectores gerenciados para as perguntas frequentes que se aplicam a todos os conectores gerenciados do LakeFlow Connect. Os itens a seguir são específicos para o conector RabbitMQ.

Perguntas frequentes específicas do conector​

Por que estou recebendo um tempo limite de conexão ao conectar-me ao RabbitMQ?​

As causas comuns incluem:

  • Host ou porta incorretos : O hostname ou a porta do broker RabbitMQ na conexão do Unity Catalog está incorreto. A porta padrão para RabbitMQ é 5672.
  • Conectividade de rede : A conectividade de rede do plano de compute serverless para o seu broker RabbitMQ está bloqueada. Verifique suas regras de emparelhamento da VPC, grupo de segurança ou firewall.

Posso ler de várias filas RabbitMQ em um único pipeline?​

Sim. Defina uma entrada de tabela por fila em ingestion_definition.objects. Cada fila é mapeada 1:1 para uma tabela de transmissão de destino. Um único pipeline usa uma conexão do Unity Catalog (um broker RabbitMQ). Para ingerir de vários brokers, criar pipelines separados.

Como posso monitorar o quão atrasada minha transmissão está em relação à fila?​

Consulte view Métricas de transmissão. Sinais key para RabbitMQ:

  • Taxa de Entrada e Taxa de Processamento : a velocidade com que o conector consome da fila.
  • Profundidade da fila no lado do broker : Monitore isso pela interface do usuário de gerenciamento do RabbitMQ. Como as filas clássicas do RabbitMQ são baseadas em fila e não possuem um offset reproduzível, a profundidade da fila é o indicador definitivo de latência.

Por que minha transmissão não está retornando registros, embora eu ache que existam dados?​

As causas comuns incluem:

  • Nome de fila incorreto : verifique se está consumindo da fila correta.
  • Consumidores Externos Concorrentes : O RabbitMQ entrega cada mensagem para exatamente um consumidor. Se outro consumidor (não-Spark) estiver lendo da mesma fila, o pipeline poderá receber menos mensagens do que o esperado.
  • Problemas de autenticação ou autorização : A conexão pode ter sido bem-sucedida, mas o usuário pode não ter permissão para consumir da fila. Verifique suas permissões do RabbitMQ (permissão de leitura na fila).
  • Mensagens já consumidas e confirmadas : ao contrário do Kafka, as filas clássicas do RabbitMQ não retêm mensagens após a confirmação. Se outro consumidor reconheceu os dados antes de o pipeline começar, não é possível reproduzi-los.

O que acontece com as mensagens se o pipeline travar antes de confirmá-las?​

O RabbitMQ garante a entrega pelo menos uma vez. Se o pipeline travar ou um consumidor se desconectar antes de enviar uma confirmação, as mensagens não confirmadas permanecerão na fila e serão reenviadas na reconexão. Isso pode produzir linhas duplicadas na tabela de destino, portanto, faça a desduplicação downstream se sua carga de trabalho for sensível a mensagens reenviadas. Se você definir a opção de configuração de tabela source_metadata_column, o campo redelivered nessa estrutura será true para mensagens reenviadas. Consulte Incluir metadados de origem.

O conector pode garantir a entrega exatamente uma vez?​

Não. O conector RabbitMQ gerenciado fornece semântica pelo menos uma vez. As filas clássicas do RabbitMQ não fornecem um identificador de mensagem exclusivo atribuído pelo broker, portanto, a deduplicação exata na camada do conector não é possível. Se você precisar de processamento com garantia de entrega única, deduplique a jusante usando uma chave específica do aplicativo (por exemplo, uma message_id definida pelo seu produtor, ou uma chave de negócios dentro do corpo da mensagem).

O conector oferece suporte a RabbitMQ Transmissões?​

Não. O conector gerenciado suporta apenas filas clássicas do RabbitMQ. RabbitMQ transmissões usam um modelo diferente, baseado em offset.