Jeg fandt forbindelsesresten ved peer-fejl og antog, at RabbitMQ ikke lyttede på porten, eller at der var en firewall, der blokerede den. Det var ikke tilfældet.
Kører RabbitMQ på Ubuntu 16.04.2 LTS, version installeret af apt:3.5.7-1ubuntu0.16.04.1
Outputtet af 'netstat -a' for Rabbits port 5672 så sådan ud:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
Men Rabbit lyttede faktisk på både IPv4-adressen og IPv6-adressen. Jeg bekræftede dette med netcat.
For at nå Rabbit fra en anden maskine skal du oprette en brugerkonto med noget i stil med følgende kommandoer:
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 .* .* .*
Problemet var min URL. Min så ud som:
BROKER_URL = 'amqp://celery:[email protected]//'
Efter den næstsidste skråstreg er vhostens navn. Ovenfor gav jeg min vhost navnet celery_vhost. For at oprette forbindelse var jeg nødt til at ændre URL'en til:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
Jeg opdagede dette ved at kigge på Rabbit-logfilerne i /var/log/rabbitmq. Der er en .log-fil, der indeholdt følgende fejl, da jeg havde den forkerte URL:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}