Znalazłem Connection rest przez błąd peera i założyłem, że RabbitMQ nie nasłuchuje na porcie lub blokuje go zapora sieciowa. Tak nie było.
Uruchamianie RabbitMQ na Ubuntu 16.04.2 LTS, wersja instalowana przez apt:3.5.7-1ubuntu0.16.04.1
Wynik 'netstat -a' dla portu 5672 Rabbita wyglądał następująco:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
Jednak Rabbit w rzeczywistości nasłuchiwał zarówno adresu IPv4, jak i adresu IPv6. Zweryfikowałem to za pomocą netcata.
Aby połączyć się z Rabbit z innej maszyny, musisz skonfigurować konto użytkownika za pomocą następujących poleceń:
sudo rabbitmqctl add_user celery celerypassword
sudo rabbitmqctl add_vhost celery_vhost
sudo rabbitmqctl set_user_tags celery celerytag
sudo rabbitmqctl set_permissions -p celery_vhost celery .* .* .*
Problemem był mój adres URL. Mój wyglądał tak:
BROKER_URL = 'amqp://celery:[email protected]//'
Po tym przedostatnim ukośniku jest nazwa vhosta. Powyżej nadałem mojemu vhostowi nazwę celery_vhost. Aby się połączyć, musiałem zmienić adres URL na:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
Odkryłem to, patrząc na logi Rabbit w /var/log/rabbitmq. Istnieje plik .log, który zawiera następujący błąd, gdy mam zły adres URL:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}