#define IS_NOWAIT(bitmask) (AMQP_NOWAIT & (bitmask)) ? 1 : 0 /* NOTE: always 0 in rabbitmq-c internals, so don't use it unless you are clearly understand aftermath*/
#define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }
<?php if (!extension_loaded("amqp")) print "skip"; ?>
--FILE--
<?php
require '_test_helpers.php.inc';
$cnn = new AMQPConnection();
$cnn->connect();
$ch = new AMQPChannel($cnn);
$ex = new AMQPExchange($ch);
$ex->setName("exchange-" . microtime(true));
$ex->setType(AMQP_EX_TYPE_FANOUT);
$ex->declareExchange();
$q = new AMQPQueue($ch);
$q->declareQueue();
$q->bind($ex->getName());
$attrs = array(
'content_type' => 1, // should be string
'content_encoding' => 2, // should be string
'message_id' => 3, // should be string
//'user_id' => 4, // should be string // NOTE: fail due to Validated User-ID https://www.rabbitmq.com/validated-user-id.html, @see tests/amqpexchange_publish_with_properties_user_id_failure.phpt test
'app_id' => 5, // should be string
'delivery_mode' => '1-non-persistent', // should be long
'priority' => '2high', // should be long
'timestamp' => '123now', // should be long
'expiration' => 100000000, // should be string // NOTE: in fact it is milliseconds for how long to stay in queue, see https://www.rabbitmq.com/ttl.html#per-message-ttl for details
'type' => 7, // should be string
'reply_to' => 8, // should be string
'correlation_id' => 9, // should be string
//'headers' => 'not array', // should be array // NOTE: covered in tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
);
$attrs_control = array(
'content_type' => 1, // should be string
'content_encoding' => 2, // should be string
'message_id' => 3, // should be string
//'user_id' => 4, // should be string // NOTE: fail due to Validated User-ID https://www.rabbitmq.com/validated-user-id.html, @see tests/amqpexchange_publish_with_properties_user_id_failure.phpt test
'app_id' => 5, // should be string
'delivery_mode' => '1-non-persistent', // should be long
'priority' => '2high', // should be long
'timestamp' => '123now', // should be long
'expiration' => 100000000, // should be string // NOTE: in fact it is milliseconds for how long to stay in queue, see https://www.rabbitmq.com/ttl.html#per-message-ttl for details
'type' => 7, // should be string
'reply_to' => 8, // should be string
'correlation_id' => 9, // should be string
//'headers' => 'not array', // should be array // NOTE: covered in tests/amqpexchange_publish_with_properties_ignore_num_header.phpt
<summary>Communicate with any AMQP compliant server</summary>
<description>This extension can communicate with any AMQP spec 0-9-1 compatible server, such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and delete exchanges and queues, as well as publish to any exchange and consume from any queue.</description>
* Add ability to re-attach consuming callback (Bogdan Padalko)
* Add AMQPQueue::getConsumerTag() method and fix consumer tag handling in AMQPQueue class methods (Bogdan Padalko)
* Add channel_max, frame_max and hearbeat support (see AMQPConnection::__construct() method) (librabbitmq version >= 0.6.0 required) (Bogdan Padalko)
* Fix issue with message truncating to first null-byte during sending (Bogdan Padalko, special thanks to Alex Kazinskiy, Alvaro Videla and Michael Klishin)
* Fix issue with message truncating to first null-byte during sending (Bogdan Padalko)
* Fix invalid delivery mode returned by AMQPEnvelop::getDeliveryMode (Bogdan Padalko)
* Fix #72: Publishing to an exchange with an empty name is valid and should not throw an exception (lstrojny)
* Fix #77: AMQPQueue::delete() now no longer returns a boolean, but an integer of how many messages were deleted. WARNING: this can potentially break BC (Bogdan Padalko)
* Fix #75: adhering to the AMQP spec by closing channel and sometimes even the connection in case of certain errors (Bogdan Padalko)