Todos os produtos
Search
Central de documentação

ApsaraMQ for RabbitMQ:Códigos de erro

Última atualização: Oct 31, 2026

Quando um cliente do ApsaraMQ for RabbitMQ chama um método AMQP 0-9-1, o broker retorna um código de resposta e texto de resposta para indicar sucesso ou falha. Use as tabelas a seguir para identificar a causa raiz de um erro e aplicar a solução recomendada.

Como interpretar uma resposta de erro

Cada resposta de erro contém os seguintes campos:

Campo

Descrição

Exemplo

reply-code

O código numérico de erro.

404

reply-text

O identificador de erro.

ExchangeNotExist

ReqId

Um ID de solicitação único para rastreamento.

5FB4C999314635F952FCBFF6

ErrorHelp

Metadados de resolução de problemas, incluindo nomes de recursos relacionados e um link para esta referência.

[dstQueue=XXX_test_queue,srcExchange=Producer.ExchangeName,routingKey=XXX_test_bk,http://mrw.so/6rNqO8]

class-id

O ID de classe AMQP. Combina com o RabbitMQ de código aberto.

50

method-id

O ID de método AMQP. Combina com o RabbitMQ de código aberto.

20

Nota

Quando uma chamada de basicPublish falha, ErrorHelp retorna apenas o msgId para reduzir a sobrecarga de desempenho. A estrutura de chave-valor não é incluída. Use o msgId para rastrear a publicação com falha.

Exemplo de rastreamento de pilha

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>
(reply-code=404, reply-text=ExchangeNotExist, ReqId:5FB4C999314635F952FCBFF6, ErrorHelp[dstQueue=XXX_test_queue,
srcExchange=Producer.ExchangeName,routingKey=XXX_test_bk, http://mrw.so/6rNqO8], class-id=50, method-id=20)
    at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:516)
    at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:346)
    at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182)
    at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114)
    at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:672)
    at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:48)
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:599)
    at java.lang.Thread.run(Thread.java:748)

Severidade dos erros

Os erros do ApsaraMQ for RabbitMQ se dividem em duas categorias:

  • Erros de nível de canal (leves) fecham apenas o canal afetado. A conexão permanece aberta, e você pode abrir um novo canal para tentar novamente. A maioria dos erros nas tabelas abaixo são de nível de canal.

  • Erros de nível de conexão (graves) fecham toda a conexão. Todos os canais nessa conexão são perdidos. Erros como 320 ProtocolVersionMismatch e 541 InternalError são de nível de conexão.

Erros de protocolo e autenticação

Código de resposta Texto de resposta Descrição Solução
320 ProtocolVersionMismatch O cliente usa uma versão de protocolo não suportada. Apenas o protocolo AMQP 0-9-1 é suportado. Use o protocolo AMQP 0-9-1.
403 AccessDeniedByRamPolicy O usuário RAM não tem as permissões necessárias. Conceda as permissões necessárias ao usuário RAM. Para detalhes, consulte RAM access policies.
530 AccessAccountDataError A autenticação falhou com o nome de usuário e senha fornecidos. Certifique-se de que:
  • O nome de usuário e a senha estáticos estão corretos.
  • As credenciais pertencem à instância atual.
  • O AccessKey ID e o AccessKey secret usados para gerar as credenciais estáticas são válidos.

Erros de recurso não encontrado

Esses erros ocorrem quando uma operação de basicPublish, BasicConsume, bind ou declare faz referência a um recurso que não existe.

Código de resposta Texto de resposta Descrição Solução
200 no route has mandatory O método basicPublish foi chamado com mandatory definido como true, mas a exchange não encontrou nenhuma fila correspondente para a chave de roteamento. O broker devolveu a mensagem ao produtor através de basic.return. Verifique as ligações da exchange. Certifique-se de que uma fila está ligada a uma chave de roteamento que corresponda à mensagem publicada.
404 ExchangeNotExist A exchange especificada não existe.
  • Crie a exchange antes de fazer referência a ela.
  • Verifique o nome da exchange para erros de digitação.
404 QueueNotExist A fila especificada não existe.
  • Crie a fila antes de fazer referência a ela.
  • Verifique o nome da fila para erros de digitação.

Erros de declaração e validação

Esses erros ocorrem quando você declara ou liga exchanges e filas, geralmente devido a nomes inválidos ou incompatibilidade de propriedades.

Código de resposta

Texto de resposta

Descrição

Solução

405

QueueExclusive

A fila é exclusiva para a conexão que a criou.

Acesse a fila apenas a partir da conexão que a declarou. Outras conexões não podem consumir ou declarar uma fila exclusiva.

406

ExchangeNameEmpty

Nenhum nome de exchange foi fornecido.

Especifique um nome de exchange não vazio. Para requisitos de nomenclatura, consulte Limits.

406

ExchangeInBuilt

Exchanges com nomes começando com amq. são reservados pelo sistema.

Escolha um nome de exchange diferente que não comece com amq..

406

QueueNameInvalid

O nome da fila contém caracteres inválidos ou excede os limites de comprimento.

Corrija o nome da fila. Para requisitos de nomenclatura, consulte Limits.

406

QueueConsumerNameInvalid

O nome do consumidor contém caracteres inválidos ou excede os limites de comprimento.

Corrija o nome do consumidor. Para requisitos de nomenclatura, consulte Limits.

406

BindingNameInvalid

A chave de roteamento contém caracteres inválidos ou excede os limites de comprimento.

Corrija a chave de roteamento. Para requisitos de nomenclatura, consulte Limits.

406

QueueHasDiffField

As propriedades na declaração da fila não correspondem à fila existente no servidor.

Atualize os parâmetros de declaração para corresponder às propriedades da fila existente. Para detalhes, consulte QueueHasDiffField.

530

ExchangeHasDiffFields

As propriedades na declaração da exchange não correspondem à exchange existente no servidor.

Atualize os parâmetros de declaração para corresponder às propriedades da exchange existente. Para detalhes, consulte ExchangeHasDiffFields.

Erros de mensagem

Código de resposta

Texto de resposta

Descrição

Solução

311

MessageBodyLengthExceeded

O corpo da mensagem excede o tamanho máximo permitido.

Reduza o tamanho da mensagem. Para limites de tamanho, consulte Limits.

406

MessageBodyEmpty

O corpo da mensagem está vazio.

Inclua conteúdo no corpo da mensagem.

Erros de exchange de mensagens atrasadas

Código de resposta

Texto de resposta

Descrição

Solução

503

ExchangeTypeNotSupport[x-delayed-message]

A exchange x-delayed-message foi declarada com parâmetros incorretos.

Defina o tipo de exchange como x-delayed-message e especifique um argumento x-delayed-type válido. Exemplo: arguments.put("x-delayed-type", "The value can only be direct, topic, fanout, or headers");channel.exchangeDeclare("${exchangeName}", "The value can only be x-delayed-message", true, false, arguments);

Erros de canal e conexão

Código de resposta Texto de resposta Descrição Solução
504 ChannelNotFind O canal foi liberado enquanto uma mensagem estava em trânsito. Isso geralmente acontece quando várias threads compartilham uma conexão e frequentemente abrem e fecham conexões. Se você estiver usando o Spring Boot com a fábrica de conexões no modo CONNECTION, aumente spring.rabbitmq.cache.connection.size para reduzir a taxa de rotatividade de conexões.
530 ChannelNumExceeded O número de canais em uma única conexão excede o limite. Feche canais de produtor ou consumidor não utilizados.
530 ConnectionNumExceeded O número de conexões em uma única instância excede o limite.
  • Reutilize conexões existentes em vez de criar uma por solicitação.
  • Atualize o tipo de instância para aumentar o limite de conexões. Para limites, consulte Limits.
530 QueueConsumerAlreadyExist Um consumidor com a mesma tag de consumidor já existe na fila. Especifique um valor único para ConsumerTag quando chamar BasicConsume no mesmo canal.

Erros de cota de recursos

Esses erros ocorrem quando uma instância, vhost ou recurso atinge sua cota. Para aumentar cotas, upgrade the instance configuration. Para limites padrão, consulte Limits.

Código de resposta Texto de resposta Descrição Solução
530 denied for too many requests O pico de TPS para envio ou recebimento de mensagens excede o limite da instância. A solicitação é limitada.
  • Aplique modelagem de tráfego para manter o TPS dentro do limite da instância. Para detalhes, consulte Best practices for instance throttling.
  • Atualize o tipo de instância para aumentar o limite de TPS.
530 VhostNumExceeded O número de vhosts na instância excede o limite.
  • Exclua vhosts não utilizados.
  • Atualize o tipo de instância.
530 ExchangeNumExceeded O número de exchanges em um único vhost excede o limite.
  • Exclua exchanges ou vhosts não utilizados.
  • Atualize o tipo de instância.
530 QueueNumExceeded O número de filas na instância excede o limite.
  • Exclua filas não utilizadas.
  • Atualize a configuração da instância.
530 VHostTotalBindingNumExceeded O número de ligações em um único vhost excede o limite.
  • Exclua ligações não utilizadas.
  • Atualize a configuração da instância.
530 ExchangeBindingNumExceeded O número de filas vinculadas a uma única exchange excede o limite. Remova ligações de filas não utilizadas da exchange.
530 QueueConsumerNumExceeded O número de consumidores em uma única fila excede o limite.
  • Remova assinaturas de consumidores não utilizadas.
  • Atualize a configuração da instância.

Erros internos

Código de resposta Texto de resposta Descrição Solução
541 InternalError Ocorreu um erro interno do servidor. Verifique o reply-text para obter detalhes e abra um tíquete para entrar em contato com o suporte técnico do ApsaraMQ for RabbitMQ.