RabbitMQ~一(yi)些術語和最消息(xi)的生產
學習一(yi)種技術需要先了解(jie)它(ta),而想要學好一(yi)種技術,需要更多的了解(jie)它(ta)的組成,原理和(he)實現(xian)機(ji)制!
RabbitMQ安裝介紹
RabbitMQ是由erlang語言開發的,所以必須先有安裝erlang,類似java安裝RabbitMQ是C/S模式的,所以安裝rabbitMQ服務器,默認端口5672提供了Web管理界面(默認端口15672),直接通過安裝插件的方式開啟它
RabbitMQ的一些術語
- Server(broker): 接受客戶端連接,實現AMQP消(xiao)息(xi)隊列(lie)和(he)路由(you)功能的進程。
- Virtual Host:其實是一個虛擬概念,類似于權限控制組,一個Virtual Host里面可以有若干個Exchange和Queue,但是權限控制的最小粒度是Virtual Host
- Producer: 消息生產者
- Consumer: 消息消費者
- Queue: 存儲消息的隊列容器
- Message: 消費者真正需要的消息數據
- Connection: 一個tcp連接,相對比較耗資源
- Channel: 一個管道連接,是tcp連接內的連接(broker),使用現有的TCP連接進行數據傳輸
- Exchange: 消息路由,生(sheng)產者發送(song)消息并不是直接發送(song)到隊列中(zhong)(zhong)的而是先到指定方式路由中(zhong)(zhong),然后由路由根據路由key綁定的隊列發送到指定隊列中(某種算法求出對應的queue,如對消息取模)。
- Binding:對路由與隊列容器的綁定關系
- Routing key: 路由鍵,主要用來尋找隊列queue
- AMQP: 高級消息隊列協議,RabbitMQ是基于此協議實現的
- Users: RabbitMQ服務是基于C/S模式,通常連接都需要認證,就是設置密碼
一個最純粹的消息生產者
ConnectionFactory factory = new ConnectionFactory();//創建連接工(gong)廠對象 factory.HostName = "localhost";//指定主機(ji)名(ming) //factory.Port = 5672;//指定端口號 //factory.VirtualHost = "amqp://localhost:5672";//指定RabbitMQ服(fu)務器(qi)的虛擬主(zhu)機(ji) //factory.UserName = "";//指(zhi)定連接用戶名 //factory.Password = "";//指定連接(jie)用戶(hu)密碼 var conn = factory.CreateConnection();//創(chuang)建(jian)連接 var channel = conn.CreateModel();//建立管道(dao) channel.QueueDeclare("lind", false, false, false, null); channel.BasicPublish(
exchange: "",
routingKey: "lind",
basicProperties: null,
body: Encoding.UTF8.GetBytes("Hello Lind!"));
上面代碼是一個主機為localhost的rabbitmq服務器的lind隊列發送一條消息,內容為Hello Lind!
通過(guo)web管理可以看到內容
感謝各位對(dui)消(xiao)息(xi)中(zhong)間件(jian)的支持,下一講我們將介紹(shao)如(ru)何去消(xiao)費消(xiao)息(xi)!