public function process()
    {
        if ($this->worker->getState() == Worker::INVALID) {
            throw new \RuntimeException('Invalid state to process.');
        }

        $expiry = 5000 + $this->delay;
        if ($this->worker->isExpired($expiry)) {
            $this->getLogger()->debug('Worker is expired, no longer registered to workerhandler.');
            $this->worker->setState(Worker::INVALID);

            return;
        }

        try {
            $read = $write = array();
            $this->getPoller()->poll($read, $write, 100);
        } catch (\ZMQPollException $ex) {
            pcntl_signal_dispatch();

            return;
        }

        $this->workerHandlerStream->handle();
        $this->serviceStream->handle();
        $this->handleResult();
        $this->heartbeat();
        pcntl_signal_dispatch();
    }