Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Distributed Message Service for Kafka/ Perguntas frequentes/ Tópicos e partições/ O que posso fazer se um consumidor não conseguir recuperar mensagens de um tópico devido a permissões insuficientes?
Atualizado em 2023-08-25 GMT+08:00

O que posso fazer se um consumidor não conseguir recuperar mensagens de um tópico devido a permissões insuficientes?

Sintoma: consumidores diferentes em um grupo de consumidores têm permissões de tópico diferentes. Quando um consumidor tenta recuperar mensagens de um tópico, a mensagem de erro "Não autorizado a acessar tópicos." é exibida e a recuperação da mensagem falha.

Análise: ao atribuir partições, o líder do grupo de consumidores não considera as permissões de consumidores individuais. Em vez disso, o líder atribui partições com base na assinatura geral do grupo de consumidores. Nesse caso, os consumidores podem receber tópicos aos quais não têm acesso.

Por exemplo, os consumidores A, B e C estão no mesmo grupo de consumidores. O consumidor A se inscreveu e tem permissões para acessar os Tópicos 0, 1 e 2; o consumidor B se inscreveu e tem permissões para acessar os Tópicos 3, 4 e 5; o consumidor C se inscreveu e tem permissões para acessar os Tópicos 6, 7 e 8. Suponha que cada tópico tenha apenas uma partição. Com base na atribuição de partição determinada pelo líder, o consumidor A pode receber os Tópicos 0, 3 e 6; o consumidor B recebe os Tópicos 1, 4 e 7; e o consumidor C recebe os Tópicos 2, 5 e 8. Nesse caso, o consumidor A não tem permissões para acessar os Tópicos 3 e 6, resultando no erro.

Figura 1 Permissões de acesso do consumidor

Solução:

  • Se todos os consumidores devem estar no mesmo grupo de consumidores (group.id é o mesmo), conceda as mesmas permissões de acesso ao tópico para todos os consumidores.
  • Se os consumidores não precisarem estar no mesmo grupo de consumidores, altere o valor de group.id para garantir que cada consumidor esteja em um grupo de consumidores separado.