純PHP AMQP庫

AMQP,即Advanced Message Queuing Protocol,一個提供統一訊息服務的應用層標準高級訊息佇列協定,是應用層協定的一個開放標準,為面向訊息的中間件設計。基於此協定的用戶端與訊息中間件可傳遞訊息,且不受客戶端/中介軟體不同產品,不同的開發語言等條件的限制。 Erlang中的實作有 RabbitMQ等。

abstract class AbstractChannel
{
    const PROTOCOL_080 = '0.8';
    const PROTOCOL_091 = '0.9.1';
    public static $PROTOCOL_CONSTANTS_CLASS;
    public function __construct(AbstractConnection $connection, $channel_id)
    {
        $this->connection = $connection;
        $this->channel_id = $channel_id;
        $connection->channels[$channel_id] = $this;
        $this->frame_queue = array(); // Lower level queue for frames
        $this->method_queue = array(); // Higher level queue for methods
        $this->auto_decode = false;
        $this->msg_property_reader = new AMQPReader(null);
        $this->wait_content_reader = new AMQPReader(null);
        $this->dispatch_reader = new AMQPReader(null);
        $this->protocolVersion = self::getProtocolVersion();
        switch ($this->protocolVersion) {
            case self::PROTOCOL_091:
                self::$PROTOCOL_CONSTANTS_CLASS = 'PhpAmqpLib\Wire\Constants091';
                $c = self::$PROTOCOL_CONSTANTS_CLASS;
                $this->debug = new DebugHelper($c);
                $this->amqp_protocol_header = $c::$AMQP_PROTOCOL_HEADER;
                $this->protocolWriter = new Protocol091();
                $this->waitHelper = new Wait091();
                $this->methodMap = new MethodMap091();
                break;
            case self::PROTOCOL_080:
                self::$PROTOCOL_CONSTANTS_CLASS = 'PhpAmqpLib\Wire\Constants080';
                $c = self::$PROTOCOL_CONSTANTS_CLASS;
                $this->debug = new DebugHelper($c);
                $this->amqp_protocol_header = $c::$AMQP_PROTOCOL_HEADER;
                $this->protocolWriter = new Protocol080();
                $this->waitHelper = new Wait080();
                $this->methodMap = new MethodMap080();
                break;
            default:
                throw new AMQPRuntimeException(sprintf(
                    'Protocol: %s not implemented.',
                    $this->protocolVersion
                ));
        }
    }


免責聲明

本站所有資源皆由網友貢獻或各大下載網站轉載。請自行檢查軟體的完整性!本站所有資源僅供學習參考。請不要將它們用於商業目的。否則,一切後果都由您負責!如有侵權,請聯絡我們刪除。聯絡方式:admin@php.cn

相關文章

php pdo資料庫操作封裝類別程式碼 php pdo資料庫操作封裝類別程式碼

25 Jul 2016

php pdo資料庫操作封裝類別程式碼

PHP QR Code 條碼與二維碼產生類別庫 PHP QR Code 條碼與二維碼產生類別庫

25 Jul 2016

PHP QR Code 條碼與二維碼產生類別庫

如何使用單例模式有效管理 PHP 類別中的資料庫連線? 如何使用單例模式有效管理 PHP 類別中的資料庫連線?

03 Nov 2024

在 PHP 類別中使用 PDO 在您的程式碼中,您嘗試擴展 PDO 類別並在 Foo 類別中實例化它。然而,這...

PHP中如何有效地將PDO整合到類別中進行資料庫互動? PHP中如何有效地將PDO整合到類別中進行資料庫互動?

02 Nov 2024

將 PDO 合併到資料庫互動類別中擴展 PHP 中的 PDO 類別並不是將 PDO 合併到...的最合適方法。

PHP腳本資料庫功能詳解(下)_PHP教程 PHP腳本資料庫功能詳解(下)_PHP教程

21 Jul 2016

PHP腳本資料庫功能詳解(下)。用類別加快PHP的資料庫開發 資料庫的存取函數較多,使用不當會降低效率,甚至導致錯誤。而PHP的本身就是開放的、可擴充的,很多人為它開

整合了前面的PHP資料庫連線類別~~做成一個分頁類別!_PHP教程 整合了前面的PHP資料庫連線類別~~做成一個分頁類別!_PHP教程

21 Jul 2016

整合了前面的PHP資料庫連線類別~~做成一個分頁類別!。不知道學PHP有沒有前途~哎越寫越沒勁?php Classcreatedb//類的開始{ var$db="localhost";//資料庫位址; var$dbname="root";//用戶名; var$ dbpwd="";//密碼; var$

See all articles