在使用Java连接rabbitmq时报错
异常信息:
connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - vhost / not found, class-id=10, method-id=40)
首先问题肯定是连接不上,那到底是什么原因呢?
我是通过这个文章解决的问题
是虚拟主机的问题, 我的yml配置文件中没有配置虚拟主机, 配置完之后解决问题.
那什么是虚拟主机呢?
Virtual vhost
虚拟主机(vhost)提供逻辑分组和资源分离。每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的connection、exchange、queue、binding等,拥有自己的权限。vhost之于RabbitMQ就像虚拟机于物理机一样,他们通过在各个实例间提供逻辑上分离,允许为不同的应用程序安全保密的运行数据。
vhost和客户端连接
vhost主机具有名称,当AMQP 0-9-1客户端连接到RabbitMQ时,它将指定要连接的虚拟主机名称。如果身份验证成功并且提供的用户名被授予了对虚拟主机的权限,则建立连接。
与虚拟主机的连接只能在该虚拟主机中的交换器、队列、绑定等上运行。仅当应用程序同时连接到两个虚拟主机时,才可能在不同的虚拟主机中进行队列和交换器的“互联”。例如:一个应用程序可以从一个虚拟主机中获取数据,然后发送到另外一个虚拟主机。
CLI工具创建虚拟主机
- 列举所有虚拟主机
rabbitmqctl list_vhosts
- 添加虚拟主机
rabbitmqctl add_vhost <vhost_name>
- 删除虚拟主机
rabbitmqctl delete_vhost <vhost_name>
转载于: vhost使用