<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                1.一些基本概念: ~~~ vhost:虛擬主機,開設多個vhost,用作不同用戶的權限分離。 channel:通道,建立一個訪問通道。 Exchange:交換機,它指定消息按什么規則,路由到哪個隊列。 Queue:隊列,每個消息都會被投入到一個或多個隊列。 Routing Key:路由,exchange根據這個關鍵字進行消息投遞。 producer:消息生產者,就是投遞消息的程序。 consumer:消息消費者,就是接受消息的程序。 ~~~ 2.建立生產者與mq之間的連接 ~~~ $conn = new AMQPStreamConnection( $host,$port,$user,$password,$vhost); $host: RabbitMQ服務器主機IP地址 $port: RabbitMQ服務器端口 $user: 連接RabbitMQ服務器的用戶名 $password: 連接RabbitMQ服務器的用戶密碼 $vhost: 連接RabbitMQ服務器的vhost(服務器可以有多個vhost,虛擬主機,類似nginx的vhost) ~~~ 3.建立通道 ~~~ $channel = $conn->channel($channel_id); //在已連接基礎上建立生產者與mq之間的通道 $channel_id 信道id,不傳則獲取$channel[“”]信道,再無則循環$this->channle數組,下標從1到最大信道數找第一個不是AMQPChannel對象的下標,實例化并返回AMQPChannel對象,無則拋出異常No free channel ids ~~~ 4.聲明初始化交換機 ~~~ $channel->exchange_declare($exhcange_name,$type,$passive,$durable,$auto_delete); 參數: $exhcange_name 交換器名字 $type 交換器類型 $passive false 是否檢測同名隊列 durable false 交換機是否開啟持久化 auto_detlete false 通道關閉后是否刪除隊列 (1)交換器類型 :direct(默認),fanout, topic, 和headers Direct : 直接交換器,工作方式類似于單播,Exchange會將消息發送完全匹配ROUTING_KEY的Queue fanout : 廣播是式交換器,不管消息的ROUTING_KEY設置為什么,Exchange都會將消息轉發給所有綁定的Queue。 topic : 主題交換器,工作方式類似于組播,Exchange會將消息轉發和ROUTING_KEY匹配模式相同的所有隊列,比如,ROUTING_KEY為user.stock的Message會轉發給綁定匹配模式為 * .stock,user.stock, * . * 和#.user.stock.#的隊列。( * 表是匹配一個任意詞組,#表示匹配0個或多個詞組) headers : 消息體的header匹配(ignore) ~~~ 5.聲明初始化一條隊列 ~~~ $channel->queue_declare($name, $passive,$durable,$exclusive,$auto_delete); name: 隊列名稱 passive: false 是否檢測同名隊列 durable: false 是否開啟隊列持久化 exclusive: false 隊列是否可以被其他隊列訪問 auto_delete: true 通道關閉后是否刪除隊列 ~~~ 6.創建要發送的信息 ,可以創建多個消息 ~~~ $msg = new AMQPMessage($data,$properties) $data string類型 要發送的消息 $properties array類型 設置的屬性,比如設置該消息持久化[‘delivery_mode’=>2] ~~~ 7.發送消息 ~~~ $channel->basic_publish($msg,$exchange,$routing_key); $msg object AMQPMessage對象 $exchange string 交換機名字 $routing_key string 路由鍵 如果交換機類型 ~~~ 8、關閉信道和鏈接 ~~~ $channel->close(); $connection->close(); ~~~ 9.路由綁定 ~~~ $channel->queue_bind($queueName, $exchangeName, $routingKey); $queueName 隊列名稱 $exchangeName 交換機名稱 $routingKey 路由鍵 ~~~ 10.消費消息 ~~~ $channel->basic_consume($queue,$consumer_tag,$no_local, $no_ack, $exclusive,$nowait, $callback); $queue隊列名稱 $callback回調函數 (1)回調函數 $callback = function($msg){ echo " [x] Received ", $msg->body, "\n"; sleep(substr_count($msg->body, '.')); echo " [x] Done", "\n"; }; ~~~ 11.監聽消息,一有消息,立馬就處理 ~~~ while(count($channel->callbacks)) { $channel->wait(); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看