string $routingKey ) { $this->channel->exchange_declare($exchangeName, 'topic', false, true, false); $this->channel->basic_publish($message, $exchangeName, $routingKey); } public function bindQueueToExecutor(string $queueName, callable $executor) { $this->channel->queue_declare($queueName, false, true, false, false); $this->channel->basic_consume($queueName, '', false, false, false, false, $executor); } public function listen() { while(count($this->channel->callbacks)) { $this->channel->wait(); } } } Low level read