public function save($queue = 'queue')
    {
        // declare queue container
        $this->channel->queue_declare(
            $queue, 
            false, 
            $this->durable, 
            false, 
            false,
            false,
            ['x-max-priority' => ['I', 10]]);

        // set message
        $message = new AMQPMessage(json_encode($this->message), $this->setOptions());

        // if no delay queue it now
        if (!$this->delay) {
            $this->channel->exchange_declare($queue.'-xchnge', 'direct');
            $this->channel->queue_bind($queue, $queue.'-xchnge');

            // queue it up main queue container
            $this->channel->basic_publish($message, $queue.'-xchnge');

            return $this;
        }
        
        $this->channel->exchange_declare('xchnge-delay',
            'x-delayed-message',
            false,  /* passive, create if exchange doesn't exist */
            true,   /* durable, persist through server reboots */
            false,  /* autodelete */
            false,  /* internal */
            false,  /* nowait */
            ['x-delayed-type' => ['S', 'direct']]);

        $this->channel->queue_bind($queue, 'xchnge-delay', 'delay_route');

        // queue it up on delay container
        $this->channel->basic_publish($message, 'xchnge-delay', 'delay_route');

        return $this;
    }