rabbitmq里有一些概念我們要清楚,如vhost,channel,exchange,queue等,而前段時間在部署rabbitmq環境時啟用了虛擬主機vhost,感覺他主要是起到了消息隔離的作用,下麵分別再說一下它們的知識。 VHost vhost去做第一層的區分,虛擬主機,工作組等,它預設是/ ...
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和如何去連接它!