to send custom headers, you need send it as associative array under attribute 'headers'
(PECL amqp >= Unknown)
AMQPExchange::publish — Publish a message to an exchange.
Publish a message to the exchange represented by the AMQPExchange object.
The message to publish.
The routing key to which to publish.
One or more of AMQP_MANDATORY and AMQP_MANDATORY.
Supported indexes key Description Default value Content-type text/plain Content-encoding NULL message_id NULL user_id NULL app_id NULL delivery_mode NULL priority NULL timestamp NULL expiration NULL type NULL reply_to NULL
Returns TRUE on success or FALSE on failure.
Throws an AMQPExchangeException on failure.
Any unused attributes will be assigned as custom headers attached to the outgoing message's headers collection.
This isn't exactly clear from the documentation above, but I've checked the C source, and that's how you set custom headers.