rabbitmq里有一些概念我们要清楚,如vhost,channel,exchange,queue等,而前段时间在部署rabbitmq环境时启用了虚拟主机vhost,感觉他主要是起到了消息隔离的作用,下面分别再说一下它们的知识。
VHost
vhost去做第一层的区分,虚拟主机,工作组等,它默认是/
添加自己项目的Vhost
添加成功后,在列表里可以显示
添加建立一个用户,设置密码
把用户添加到对应的VHost组里,注意连接时也要使用VHost参数,如果没有特别设置,可以不指定它,默认就是/
channel
创建了客户端到Broker之间的连接后,客户端还是不能发送消息的。需要为每一个Connection创建Channel,AMQP协议规定只有通过Channel才能执行AMQP的命令。一个Connection可以包含多个Channel。之所以需要Channel,是因为TCP连接的建立和释放都是十分昂贵的,如果一个客户端每一个线程都需要与Broker交互,如果每一个线程都建立一个TCP连接,暂且不考虑TCP连接是否浪费,就算操作系统也无法承受每秒建立如此多的TCP连接
Exchange
有多种类型,我们在发布和订阅时,要指定这些类型,一般我们会使用性能更好的direc,或者更灵活的,支持通配符的topic
在客户端连接时,需要指定一下VHost
exchangeName = options.ExchangeName; mqServerHost = options.MqServerHost; userName = options.UserName; password = options.Password; var factory = new ConnectionFactory() { Uri = new Uri(mqServerHost) }; factory.VirtualHost = options.VirtualHost;
好了,本讲主要介绍了如何去配置VHost和如何去连接它!