/** * @param callable $job_runner */ private function checkMessageForJobIsAcknowledged(callable $job_runner) { $uniqid = uniqid(); $expected_job = ['name' => "some-job-{$uniqid}", 'params' => ['value' => $uniqid], 'meta' => ['buffered_job_id' => rand(1, 10)]]; $this->database->insert('queued_jobs', $expected_job['meta']['buffered_job_id'], []); $this->worker_queue->push($expected_job['name'], $expected_job['params'], $expected_job['meta']); $this->worker_queue->runNext($job_runner); $this->message_bank->emulateReconnect(); $this->worker_queue->runNext(function () { }); }
/** * @covers ::consumeMessage * @covers ::produceMessage * @covers ::acknowledgeMessage * @covers ::emulateReconnect */ public function testOnlyAckedMessagesComeBackOnReconnect() { $message_bank = new MessageBank(); $acked_message = 'a-' . uniqid(); $unacked_message = 'b-' . uniqid(); $message_bank->produceMessage($acked_message); $message_bank->produceMessage($unacked_message); $consumed_ack_message = $message_bank->consumeMessage(); $this->assertSame($acked_message, $consumed_ack_message->getContent()); $consumed_ack_message->acknowledge(); $this->assertSame($unacked_message, $message_bank->consumeMessage()->getContent()); $message_bank->emulateReconnect(); $this->assertSame($unacked_message, $message_bank->consumeMessage()->getContent()); }