赞
踩
rabbitmq的安装, brew方式
brew update
然后它会提示你执行如下语句
Error:
homebrew-core is a shallow clone.
To `brew update`, first run:
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
This command may take a few minutes to run due to the large size of the repository.
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!
##执行时间比较长,大概需要3分钟
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
最后结果如下
执行时间比较长,需要下载相关依赖,耐心等候就好了
brew install rabbitmq
安装文件路径是在 /usr/local/Cellar/rabbitmq/<版本号>/ , 其实可以在/usr/local/opt/rabbitmq/sbin 进行访问,它也创建一个链接文件在(/usr/local/sbin)
建议加上在配置文件加上这个路径
vim ~/.bash_profile
export PATH=$PATH:/usr/local/sbin
## 修改完之后就让配置生效
source ~/.bash_profile
## 启动rabbitmq
brew services start rabbitmq
## 关闭rabbitmq
brew services stop rabbitmq
应该这个控制台是插件形式提供,所以需要先把这个插件开启,执行如下命令
rabbitmq-plugins enable rabbitmq_management
重启rabbitmq
brew services start rabbitmq
输入localhost:15672 ,见到如下界面
添加账户和权限
## 添加一个用户为test, 密码为test
rabbitmqctl add_user test test
## 给test赋予UI管理员权限
rabbitmqctl set_user_tags test administrator
## 给test赋予服务权限
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
登录系统,会看到如下界面
你可以简单理解exchange类似路由器, queue就是一根根网线
消息首先会到达exchange,然后exchange将消息分发到不同的queue中, 然后消费者消费不同queue,所有我们需要创建exchange(交换器) 和queue(队列)
还要说一下rabbitmq有虚拟主机概念,有点类似有linux不同用户看到不同home目录一样,互不干扰,这里需要创建一个虚拟主机,消息隔离
## 添加虚拟主机 test_host
rabbitmqctl add_vhost test_host
## 赋予可以查看角色,guest是可以看到的
rabbitmqctset_permissions -p test_host guest ".*" ".*" ".*"
执行如上语句将会看到如下结果
## 在test_host创建 一个交互器 test_exchange, 类型为直连
rabbitmqadmin declare exchange --vhost=test_host name=test_exchange type=direct
## 在test_host创建一个队列名称为 test_queue
rabbitmqadmin declare queue --vhost=test_host name=test_queue durable=true
如果细心的话我们都是在vhost下创建对象,也就是与vhost有关联,它们本身是没有关联的,这个时候需要将它们关联起来,(将网线插到路由器上)
rabbitmqadmin --vhost=test_host declare binding source=test_exchange destinati_type=queue destination=test_queue routing_key=test_routing_key
## 发送一个消息为hello,world
rabbitmqadmin publish exchange=test_exchange routing_key=test_routing_key payload="hello, world" --vhost=test_host
rabbitmqadmin get --vhost=test_host queue=test_queue ackmode=ack_requeue_false --username=test --password=test
可能会报,后面在看到
*** Access refused: /api/queues/test_host/test_queue/get
2021年06月03日 fix 解决这个异常,因为原因是没有赋予test, vhost权限
需要执行如下命令
## 赋予test所有消息权限,新增消息之类
rabbitmqctl set_permissions -p test_host test ".*" ".*" ".*"
在执行上面语句将会看到如下结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。