timestamp = $timestamp; $this->attempts = $attempts; $this->id = $id; $this->body = $body; $this->consumer = $consumer; } public function isFinished(): bool { return $this->finished; } public function finish(): void { if ($this->finished) { throw MessageAlreadyFinished::finish($this); } $this->consumer->fin($this->id); $this->finished = true; } public function requeue(int $timeout): void { if ($this->finished) { throw MessageAlreadyFinished::requeue($this); } $this->consumer->req($this->id, $timeout); $this->finished = true; } public function touch(): void { if ($this->finished) { throw MessageAlreadyFinished::touch($this); } $this->consumer->touch($this->id); } }