最近在 WSL
上安装 RabbitMQ
遇到了一个问题,折腾了很久,在此记录一下。
下载和安装
下载和安装直接去官网看教程即可,很详细,基本复制粘贴命令行即可。
https://www.rabbitmq.com/download.html
配置
安装完之后需要启用一个 RabbitMQ
插件才能访问管理页面。
ultravires@x:/mnt/c/Users/ultravires$ whereis rabbitmq
rabbitmq: /usr/lib/rabbitmq /etc/rabbitmq
ultravires@x:/usr/lib/rabbitmq$ cd /usr/lib/rabbitmq/bin/
ultravires@x:/usr/lib/rabbitmq/bin$ ls
erl_crash.dump rabbitmq-diagnostics rabbitmq-plugins rabbitmq-server rabbitmqctl
rabbitmq-defaults rabbitmq-env rabbitmq-queues rabbitmq-upgrade
ultravires@x:/usr/lib/rabbitmq/bin$ sudo rabbitmq-plugins enable rabbitmq_management
ultravires@x:/usr/lib/rabbitmq/bin$ sudo rabbitmq-plugins list
[sudo] password for ultravires:
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@x
|/
[ ] rabbitmq_amqp1_0 3.8.12
[ ] rabbitmq_auth_backend_cache 3.8.12
[ ] rabbitmq_auth_backend_http 3.8.12
[ ] rabbitmq_auth_backend_ldap 3.8.12
[ ] rabbitmq_auth_backend_oauth2 3.8.12
[ ] rabbitmq_auth_mechanism_ssl 3.8.12
[ ] rabbitmq_consistent_hash_exchange 3.8.12
[ ] rabbitmq_event_exchange 3.8.12
[ ] rabbitmq_federation 3.8.12
[ ] rabbitmq_federation_management 3.8.12
[ ] rabbitmq_jms_topic_exchange 3.8.12
[E*] rabbitmq_management 3.8.12
[e*] rabbitmq_management_agent 3.8.12
[ ] rabbitmq_mqtt 3.8.12
[ ] rabbitmq_peer_discovery_aws 3.8.12
[ ] rabbitmq_peer_discovery_common 3.8.12
[ ] rabbitmq_peer_discovery_consul 3.8.12
[ ] rabbitmq_peer_discovery_etcd 3.8.12
[ ] rabbitmq_peer_discovery_k8s 3.8.12
[ ] rabbitmq_prometheus 3.8.12
[ ] rabbitmq_random_exchange 3.8.12
[ ] rabbitmq_recent_history_exchange 3.8.12
[ ] rabbitmq_sharding 3.8.12
[ ] rabbitmq_shovel 3.8.12
[ ] rabbitmq_shovel_management 3.8.12
[ ] rabbitmq_stomp 3.8.12
[ ] rabbitmq_top 3.8.12
[ ] rabbitmq_tracing 3.8.12
[ ] rabbitmq_trust_store 3.8.12
[e*] rabbitmq_web_dispatch 3.8.12
[ ] rabbitmq_web_mqtt 3.8.12
[ ] rabbitmq_web_mqtt_examples 3.8.12
[ ] rabbitmq_web_stomp 3.8.12
[ ] rabbitmq_web_stomp_examples 3.8.12
访问
我遇到的问题就在这里:虽然 WSL 系统的 IP 地址和物理操作系统的 IP 地址是一样的,你可以使用 127.0.0.1:15672 访问管理页面。但是在使用代码进行连接的时候,远程 IP 地址必须是 WSL 的 IP 地址。不能使用 127.0.0.1 5672 进行连接!!!
ultravires@x:/usr/lib/rabbitmq/bin$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.23.159.155 netmask 255.255.240.0 broadcast 172.23.159.255
inet6 fe80::215:5dff:fe13:fdf2 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:13:fd:f2 txqueuelen 1000 (Ethernet)
RX packets 10734 bytes 2712042 (2.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2448 bytes 1572765 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 16547 bytes 4502270 (4.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16547 bytes 4502270 (4.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这里应该使用: 172.23.159.155
。
检查
发下上面的问题是通过 powershell
输入:
netstat -ano | findstr 5672
查看 5672
端口的连接状态,如果是 ESTABLISHED
才代表连接成功。如果是 SYN_SENT
代表请求连接的状态,这样是有问题的。