幸运飞艇停吗

ASP源碼.NET源碼PHP源碼JSP源碼JAVA源碼DELPHI源碼PB源碼VC源碼VB源碼Android源碼
當前位置:首頁 >> 網絡編程 >> 其他編程教程 >> RabbitMQ的一些理解和筆記

RabbitMQ的一些理解和筆記(1/2)

來源:網絡整理     時間:2018-11-01     關鍵詞:

BENPIANWENZHANGZHUYAOJIESHAOLE" RabbitMQDEYIXIELIJIEHEBIJI",ZHUYAOSHEJIDAOFANGMIANDENEIRONG,DUIYUQITABIANCHENGJIAOCHENGGANXINGQUDETONGXUEKEYICANKAOYIXIA: ZAIZHEPIANBOKEZHONG,JIANDANJILUYIXIA rabbitmq FUWUQIZHONGYIXIEJIBENDEGAINIAN。Connection:connection WEI TCPLIANJIE,SHIWOMENDEYINGYONGCHENGXUHERabbi...

在這篇博客中,簡單記錄一下 rabbitmq 服務器中一些基本的概念。

Connection:幸运飞艇停吗connection 為 TCP連接,是我們的應用程序和RabbitMQ服務器真正發送和接收數據的地方。

Channel: 幸运飞艇停吗channel為connection創建的“信道”,具體的AMQP命令都是通過信道發送出去的。每一條信道都有一個唯一的id,channel是線程不安全的。

bindingKey和routingKey的區分:

bindingkey: 在使用綁定的時候,需要用到的路由鍵是 bindingkey。涉及到的客戶端方法: channel.exchangeBind channel.queueBind等

    routingkey: 在發送消息的時候,需要用到的路由鍵是 routingkey。涉及到的客戶端方法: channel.basicPublish

exchange:交換器,存在四種類型

  1. fanout:fanout類型的Exchange路由規則非常簡單,它會把所有發送到該Exchage的消息路由到所有與它綁定的Queue中。

  2. direct:direct類型的Exchange路由規則也是非常簡單,它會把消息路由到哪些 binding key routing key 完全匹配的Queue中。

    每個隊列在新建時,默認會綁定到  默認交換器(名字為空字符串),綁定的路由鍵名稱和路由鍵名稱一致。
  3. topic:根據 routingKey 和 bindingKey 進行匹配。bindingKey
  4. headers:此種交換器不常用,它是使用headers來匹配的,不依賴routingKey和bindingKey可以存在兩種特殊字符*#用于做模糊匹配,其中 “*” 用于匹配一個單詞,“#”用于匹配多個參數(可以是零個)。注意:“*” 以 . 作為分隔符 、  “#” 以任何字符作為匹配關鍵字的部分。

vhost:虛擬主機

每一個 vhost 本質上就是一個 mini 版的 RabbitMQ 服務器,它擁有自己的隊列、交換器、綁定等,同時它也有自己的權限控制。它提供了邏輯上的隔離,保證了數據的安全性。

Connection和Channel有什么關系?

幸运飞艇停吗   WOMENZHIDAOCAOZUOXITONGCHUANGJIANHEXIAOHUIYITIAOtcpLIANJIESHIFEICHANGXIAOHAOXINGNENGDE,RUGUOXITONGGAOFENGQISHI,DALIANGDECHUANGJIANHEXIAOHUITCPLIANJIE,ZHEHUIZAOCHENGDALIANGDEXINGNENGSUNHAO,BINGQIEXITONGHENYOUKENENGDADAOPINGJING,RUGUOWOMENSUOYOUDEXIANCHENGDOUSHIYONGYITIAOTCPLIANJIE,BINGQIEBAOZHENGMEIGEXIANCHENGDESIMIXING,NEIMEJIUKEYIDADATIGAOXITONGDEXINGNENG,YINCI Channel JIUYINGYUNERSHENGLE。

JI:WOMENKEYIJIANDANDELIJIE,channel JIUSHIYIGEXUNIDE connection,channelSHITONGGUOconnectionCHUANGJIANDELAIDE,channelSHIXIANCHENGBUANQUANDE。

設置消息的過期時間:

   1、設置隊列中消息的過期時間

          通過隊列設置的過期時間,那么隊列中的每條消息的過期時間都是一致的。

         在channel.queueDeclare 時,設置x-message-ttl 參數,這個參數的單位是毫秒

         ** 不進行設置,表示此消息永不過期

         ** 設置為0表示,除非此時可以將消息投遞給消費者,否則該消息會被立即丟棄

    2、為單條消息設置過期時間

         在channel.basicPublish 方法中加入expiretion 的屬性參數,單位是毫秒

注意:

   1、如果同時設置了隊列的過期時間和消息的過期時間,那么以過期時間小的為準

          2、對于第一種方法設置的過期時間,在消息過期時就會從隊列中進行移除,對于第二種方法,即使消息過期也不會馬上從隊列中移除,因為每條消息的過期時間是在即將投遞給消費者之前進行判斷的。

消費者消費消息時與rabbitmq斷開連接:

    RUGUOXIAOFEIZHEJIUSHOUDAOYITIAOXIAOXI,RANHOUQUERENZHIQIANYURabbitMQDUANKAILIANJIEHUOCONGDUILIESHANGQUXIAODINGYUE,RabbitMQHUIRENWEIZHETIAOXIAOXIMEIYOUJINXINGFENFA,HUIZHONGXINFENFAGEIXIAYIGEXIAOFEIZHEJINXINGCHULI。

相關圖片

相關文章