This extensions brings to php bindings for Azure uAMQP C Library, a general purpose C library for AMQP 1.0.
PHP Version | Supported |
---|---|
7.2 | ✅ |
7.3 | ✅ |
7.4 | ✅ |
Download repository and then initialize submodules (dependencies)
git clone git@github.com:norzechowicz/php-uamqp.git --recursive cd php-uamqp git submodule update --init --recursive
Below you can find public API (classes/functions/constants/interfaces) of the extension, since this project is still under development, those methods might change. Do not use at production, it was never tested anywhere.
UAMQP\Connection::__construct(string $host, int $port, string $policyName, string $policyKey) UAMQP\Connection::enableDebugMode() : void UAMQP\Connection::disableDebugMode() : void UAMQP\Connection::host() : string UAMQP\Connection::port() : int UAMQP\Connection::policyName() : string UAMQP\Connection::policyKey() : string
UAMQP\Message::__construct(string $payload) UAMQP\Message::payload() : string
UAMQP\Destination::__construct(string $value) UAMQP\Destination::value() : string
UAMQP\Producer::__construct(UAMQP\Connection $message) UAMQP\Producer::sendMessage(UAMQP\Message $message, UAMQP\Destination $destination) : void
const \UAMQP\Receiver::RECEIVE_AND_DELETE = 0; const \UAMQP\Receiver::PEAK_AND_LOCK = 1; \UAMQP\Consumer::__construct(\UAMQP\Connection $message) \UAMQP\Consumer::open(\UAMQP\Destination $destination, int $settleMode = \UAMQP\Receiver::RECEIVE_AND_DELETE) : void UAMQP\Consumer::receive() : ?\UAMQP\Message UAMQP\Consumer::accept() : void UAMQP\Consumer::release() : void UAMQP\Consumer::reject(string $errorCondition, string $errorDescription) : void UAMQP\Consumer::close() : void
Opening connection, creating producer, publishing couple messages and consuming
them with consumer in RECEIVE_AND_DELETE
settle mode (messages deleted when received).
<?php $connection = new \UAMQP\Connection(getenv('PHP_UAMQP_TEST_SB_HOST'), 5671, getenv('PHP_UAMQP_TEST_SB_POLICY_NAME'), getenv('PHP_UAMQP_TEST_SB_POLICY_KEY')); $producer = new \UAMQP\Producer($connection); $destination = new \UAMQP\Destination(getenv('PHP_UAMQP_TEST_SB_DESTINATION')); $producer->sendMessage(new \UAMQP\Message($payload = "this is some random test message 1 " . time()), $destination); $producer->sendMessage(new \UAMQP\Message($payload = "this is some random test message 2 " . time()), $destination); $producer->sendMessage(new \UAMQP\Message($payload = "this is some random test message 3 " . time()), $destination); $producer->sendMessage(new \UAMQP\Message($payload = "this is some random test message 4 " . time()), $destination); $consumer = new \UAMQP\Consumer($connection, \UAMQP\Consumer::RECEIVE_AND_DELETE); $i = 0; $consumer->open($destination); for ($t = 0; $t < 10; $t++) { $message = $consumer->receive(); if ($message) { $i++; var_dump($i, $message); continue ; } if ($i >= 4) { break; } usleep(250000); }