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() | 一些額外配置 |