530 communication auth_error ai_generated true

AMQPConnectionError: connection closed by server (530) NOT_ALLOWED

ID: communication/amqp-connection-530-not-allowed

Also available as: JSON · Markdown · 中文
85%Fix Rate
90%Confidence
1Evidence
2024-01-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
RabbitMQ 3.12.0 active — — —
pika 1.3.2 active — — —
amqplib 0.10.3 active — — —

Root Cause

The AMQP client attempted to connect with insufficient permissions or an invalid virtual host (vhost) on the RabbitMQ broker.

generic

中文

AMQP 客户端尝试连接时权限不足或虚拟主机(vhost)无效,导致 RabbitMQ 代理拒绝。

Official Documentation

https://www.rabbitmq.com/amqp-0-9-1-reference.html#connection.close

Workarounds

  1. 90% success Verify and grant correct permissions for the user on the target vhost using RabbitMQ CLI: `rabbitmqctl set_permissions -p my_vhost my_user "^.*" "^.*" "^.*"` and ensure the vhost exists with `rabbitmqctl add_vhost my_vhost`.
    Verify and grant correct permissions for the user on the target vhost using RabbitMQ CLI: `rabbitmqctl set_permissions -p my_vhost my_user "^.*" "^.*" "^.*"` and ensure the vhost exists with `rabbitmqctl add_vhost my_vhost`.
  2. 85% success Configure the client connection string to explicitly specify the vhost: In Python with pika, use `pika.URLParameters('amqp://user:pass@host:5672/my_vhost')`.
    Configure the client connection string to explicitly specify the vhost: In Python with pika, use `pika.URLParameters('amqp://user:pass@host:5672/my_vhost')`.
  3. 80% success Check RabbitMQ logs for detailed rejection reason: `tail -f /var/log/rabbitmq/[email protected]` to see if the error is due to vhost mismatch or user permissions.
    Check RabbitMQ logs for detailed rejection reason: `tail -f /var/log/rabbitmq/[email protected]` to see if the error is due to vhost mismatch or user permissions.

中文步骤

  1. Verify and grant correct permissions for the user on the target vhost using RabbitMQ CLI: `rabbitmqctl set_permissions -p my_vhost my_user "^.*" "^.*" "^.*"` and ensure the vhost exists with `rabbitmqctl add_vhost my_vhost`.
  2. Configure the client connection string to explicitly specify the vhost: In Python with pika, use `pika.URLParameters('amqp://user:pass@host:5672/my_vhost')`.
  3. Check RabbitMQ logs for detailed rejection reason: `tail -f /var/log/rabbitmq/[email protected]` to see if the error is due to vhost mismatch or user permissions.

Dead Ends

Common approaches that don't work:

  1. Reinstall RabbitMQ server to reset permissions 90% fail

    Reinstalling is overkill; the issue is typically a misconfigured vhost or user permissions, not a corrupt installation.

  2. Use the default guest/guest credentials with default vhost '/' 80% fail

    RabbitMQ disables guest user access from non-localhost by default; this fails for remote clients.

  3. Increase the connection timeout in the client 95% fail

    The error is a rejection, not a timeout; increasing timeout doesn't change permission checks.