RabbitMQ各方法詳解(PHP版)

exchange_declare($exchange, $type, $passive = false, $durable = false, $auto_delete = true, $internal = false, $nowait = false, $arguments = array(), $ticket = null) 。試探性申請一個交換器,若該交換器不存在,則創建;若存在,則跳過。

序號 參數名 默認值 解釋
1 $exchange   交換器名稱。
2 $type   交換器類型,常見的如fanout、direct、topic、headers四種。
3 $passive false 只判斷不創建(一般用於判斷該交換機是否存在),如果你希望查詢交換機是否存在.而又不想在查詢時創建這個交換機.設置此爲true即可如果交換機不存在,則會拋出一個錯誤的異常.如果存在則返回NULL。
4 $durable false 設置是否持久化。設置true表示持久化,反之非持久化。持久化可以將交換器存盤,在服務器重啓的時候不會丟失相關信息。
5 $auto_delete true 設置是否自動刪除。設置true表示自動刪除。自動刪除的前提:至少有一個隊列或交換器與這個交換器綁定,之後所有與這個交換器綁定的隊列或交換器都與此解綁。不要錯誤的理解:“當與此交換器連接的客戶端都斷開時,RabbitMQ會自動刪除本交換器”。
6 $internal false 設置是否是內置的。設置true表示是內置的交換器,客戶端程序無法直接發送消息到這個交換器中,只能通過交換器路由到交換器這個方式。
7 $nowait false 如果爲true則表示不等待服務器回執信息.函數將返回NULL,可以提高訪問速度。
8 $arguments array() 其他一些結構化參數。
9 $ticket null  

queue_declare($queue = '', $passive = false, $durable = false, $exclusive = false, $auto_delete = true, $nowait = false, $arguments = array(), $ticket = null)。試探性申請一個交換器,若該交換器不存在,則創建;若存在,則跳過。

序號 參數名 默認值 解釋
1 $queue   隊列名稱。
2 $passive false 只判斷不創建(一般用於判斷該隊列是否存在),如果你希望查詢隊列是否存在,而又不想在查詢時創建這個隊列,設置此爲true即可;如果隊列不存在,則會拋出一個錯誤的異常,如果存在則返回NULL。
3 $durable     false 設置是否持久化。設置true表示持久化,反之非持久化。持久化的隊列可以存盤,在服務器重啓的時候不會丟失相關信息。
4 $exclusive     false 設置是否排他。設置true時,表示爲排他隊列,該隊列僅對首次首次聲明它的連接可見,並在連接斷開時自動刪除。注意三點:排他隊列是基於連接(Connection)可見的,同一個連接的不同信道(Channel)是可以同時訪問同一連接創建的排他隊列;“首次”是指如果同一個連接已經聲明瞭一個排他隊列,其他連接時不允許建立同名排他隊列的,這個與普通隊列不同;即使該隊列是持久化的,一旦連接關閉或客戶端退出,該排他隊列都會自動刪除,這種隊列適合一個客戶端同時發送和讀取消息的場景。
5 $auto_delete true 設置是否自動刪除。設置true表示隊列自動刪除。自動刪除的前提:至少一個消費者連接到這個隊列,之後所有與這個隊列連接的消費者都斷開時,纔會自動刪除。不要錯誤的理解:“當連接到此隊列的所有客戶端斷開時,這個隊列自動刪除”,因爲生產者客戶端創建這個隊列,或沒有消費者客戶端與這個隊列連接時,都不會自動刪除這個隊列。
6 $nowait false 如果爲true則表示不等待服務器回執信息.函數將返回NULL,可以提高訪問速度。
7 $arguments array() 其他一些結構化參數。$arguments = new AMQPTable([
        'x-message-ttl' => 10000,  // 延遲時間 (毫秒)創建queue時設置該參數可指定消息在該queue中待多久,可根據x-dead-letter-routing-key和x-dead-letter-exchange生成可延遲的死信隊列。
        'x-expires' => 26000,  // 隊列存活時間  如果一個隊列開始沒有設置存活時間,後面又設置是無效的。
        'x-dead-letter-exchange' => 'exchange_direct_ttl3',  // 延遲結束後指向交換機(死信收容交換機)
        'x-dead-letter-queue' => 'queue_ttl3',  // 延遲結束後指向隊列(死信收容隊列),
        //'x-dead-letter-routing-key' => 'queue_ttl3',  // 設置routing-key
        //'x-max-priority'=>'10' //聲明優先級隊列.表示隊列應該支持的最大優先級。建議使用1到10之間.該參數會造成額外的CPU消耗。
    ]
);
8 $ticket null  

 

 

 

 

 

 

 

 

 

queue_bind($queue, $exchange, $routing_key = '', $nowait = false, $arguments = array(), $ticket = null)。將隊列和交換器綁定。

序號 參數名 默認值 解釋
1 $queue   隊列名稱。
2 $exchange   交換器名稱。
3 $routing_key 用來綁定隊列和交換器的路由鍵
4 $nowait  false 如果爲true則表示不等待服務器回執信息.函數將返回NULL,可以提高訪問速度。
5 $arguments  array() 定義綁定的一些參數
6 $ticket  null  

 

 

 

 

 

 

 

 

exchange_bind($destination, $source, $routing_key = '', $nowait = false, $arguments = array(), $ticket = null)。交換器與交換器綁定。

序號 參數名 默認值 解釋
1 $destination   目標交換器(某種程度上可以看成一個隊列)。
2 $source   源交換器(消息從source交換器到destination交換器)。
3 $routing_key 用來綁定隊列和交換器的路由鍵
4 $nowait  false 如果爲true則表示不等待服務器回執信息.函數將返回NULL,可以提高訪問速度。
5 $arguments  array() 定義綁定的一些參數
6 $ticket  null  

 

 

 

 

 

 

 

 

basic_publish($msg, $exchange = '', $routing_key = '', $mandatory = false, $immediate = false, $ticket = null)。生產消息。

序號 參數名 默認值 解釋
1 $msg   生產的消息
2 $exchange   交換器的名稱,指明消息需要發送到哪個交換器中。如果設置爲空字符串,則消息會被髮送到RabbitMQ默認的交換器中。
3 $routing_key   路由鍵。交換器根據路由鍵將消息儲存到相應的隊列之中。
4 $mandatory false 設置爲true時,交換器無法根據自身的類型和路由鍵找到一個符合條件額隊列,那麼RabbitMQ會調用Basic.Return命令將消息返回給生產者。當設置爲false的時,出現上述問題,則消息直接被丟棄。
5 $immediate  fasle RabbitMQ3.0版本開始去掉對immediate參數的支持。
6 $ticket  null  

 

 

 

 

 

 

 

 

 

basic_consume($queue = '', $consumer_tag = '', $no_local = false, $no_ack = false, $exclusive = false, $nowait = false, $callback = null, $ticket = null, $arguments = array())。消費消息。

序號 參數名 默認值 解釋
1 $queue   隊列名稱。
2 $consumer_tag   消費者標籤。用來區分多個消費者。
3 $no_local false AMQP的標準,但rabbitMQ並沒有做實現。
4 $no_ack false 收到消息後,是否不需要回復確認即被認爲被消費;設置爲true,表示自動應答;設置爲false表示手動應答。
5 $exclusive false 設置是否排他。排他消費者,即這個隊列只能由一個消費者消費.適用於任務不允許進行併發處理的情況。
6 $nowait false 如果爲true則表示不等待服務器回執信息.函數將返回NULL,但若排他開啓的話,則必須需要等待結果的,如果兩個一起開就會報錯。
7 $callback null callback函數
8 $arguments  array() 一些額外配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章