ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured java.net.SocketException: socket closed
解决办法
- 通常情况下
PS D:\tools\RabbitMQ Server\rabbitmq_server-3.8.0\sbin> .\rabbitmqctl.bat set_permissions -p \ cbus .* .* .*
就可以了
自定义vhost
- 添加vhost
.\rabbitmqctl.bat add_vhost {vhost_name}
PS D:\tools\RabbitMQ Server\rabbitmq_server-3.8.0\sbin> .\rabbitmqctl.bat add_vhost cbus_vhost
Adding vhost "cbus_vhost" ...
PS D:\tools\RabbitMQ Server\rabbitmq_server-3.8.0\sbin> .\rabbitmqctl.bat set_permissions -p cbus_vhost cbus .* .* .*
Setting permissions for user "cbus" in vhost "cbus_vhost" ...
vhost常用命令
- vhost列表
.\rabbitmqctl.bat list_hosts
- 添加vhost
.\rabbitmqctl.bat add_vhost
- 删除vhost
.\rabbitmqctl.bat delete_host
vhost
参考
https://www.cnblogs.com/hongjh/p/7644718.html
vhost是rabbitmq分配权限的最小细粒度。比如我们可以为一个用户分配一个可以访问哪个或者哪一些vhost的权限。
但是不能为用户分配一个可以访问哪一些exchange,或者queue的权限,因为rabbitmq的权限细粒度没有细化到交换器和队列,他的最小细粒度是vhost(vhost中包含许多的exchanges,queues,bingdings)。
所以如果exchangeA 和queueA 只能让用户A访问,exchangeB 和queueB 只能让用户B访问,要达到这种需求,只能为exchangeA 和queueA创建一个vhostA,为exchangeB 和queueB 创建vhostB,这样就隔离开来了。