Skip to content

Commit 4544c27

Browse files
committed
improvements
1 parent 2b4fe1f commit 4544c27

4 files changed

Lines changed: 22 additions & 6 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ Ve všech ostatních případech se záznam uloží jako úspěšně dokončený
104104

105105
### 2.2 Commandy
106106

107-
`background-queue:process` Zpracuje všechny záznamy ve stavu `READY`, `TEMPORARILY_FAILED`, `WAITING` a `AMQP_FAILED`, v případě využití AMQP brokera pouze záznamy ve stavu `TEMPORARILY_FAILED` a `WAITING`. Command je ideální spouštět cronem každou minutu. V případě použití AMQP brokeru je záznam ve stavu `TEMPORARILY_FAILED` a `WAITING` zařazen znovu do AMQP brokera.
107+
`background-queue:process` Zpracuje všechny záznamy ve stavu `READY`, `TEMPORARILY_FAILED` a `WAITING`, v případě využití AMQP brokera pouze záznamy ve stavu `TEMPORARILY_FAILED` a `WAITING`. Command je ideální spouštět cronem každou minutu. V případě použití AMQP brokeru je záznam ve stavu `TEMPORARILY_FAILED` a `WAITING` zařazen znovu do AMQP brokera.
108108

109109
`background-queue:clear-finished` Smaže všechny úspěšně zpracované záznamy.
110110

src/BackgroundQueue.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public function publishToBroker(BackgroundJob $entity): void
121121
} catch (Exception $e) {
122122
$this->logException('Unexpected error occurred.', $entity, $e);
123123

124-
$entity->setState(BackgroundJob::STATE_AMQP_FAILED)
124+
$entity->setProcessByBroker(false)
125125
->setErrorMessage($e->getMessage());
126126
$this->save($entity);
127127
}
@@ -396,6 +396,9 @@ public function save(BackgroundJob $entity): void
396396
$this->updateSchema();
397397

398398
if (!$entity->getId()) {
399+
if ($this->producer) {
400+
$entity->setProcessByBroker(true);
401+
}
399402
$this->connection->insert($this->config['tableName'], $entity->getDatabaseValues());
400403
$entity->setId($this->connection->lastInsertId());
401404
} else {
@@ -448,6 +451,7 @@ public function updateSchema(): void
448451
$table->addColumn('identifier', Types::STRING)->setNotnull(false);
449452
$table->addColumn('is_unique', Types::BOOLEAN)->setNotnull(true)->setDefault(0);
450453
$table->addColumn('available_at', Types::DATETIME_IMMUTABLE)->setNotnull(false);
454+
$table->addColumn('process_by_broker', Types::BOOLEAN)->setNotnull(true)->setDefault(0);
451455

452456
$table->setPrimaryKey(['id']);
453457
$table->addIndex(['identifier']);

src/Console/ProcessCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
4444
if (
4545
$this->backgroundQueue->getConfig()['producer']
4646
&&
47-
$_entity->getState() !== BackgroundJob::STATE_AMQP_FAILED
47+
$_entity->getProcessByBroker()
4848
) {
4949
$_entity->setState(BackgroundJob::STATE_READY);
5050
$this->backgroundQueue->save($_entity);

src/Entity/BackgroundJob.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,11 @@ final class BackgroundJob
1414
const STATE_PERMANENTLY_FAILED = 5; // kritická chyba (např. chyba v implementaci)
1515
const STATE_WAITING = 6; // ceka na pristi zpracovani
1616
const STATE_REDUNDANT = 7; // je nadbytecny (kdyz isUnique = true)
17-
const STATE_AMQP_FAILED = 8; // nepodarilo se zpracovat pomoci AMQP
1817

1918
const READY_TO_PROCESS_STATES = [
2019
self::STATE_READY => self::STATE_READY,
2120
self::STATE_TEMPORARILY_FAILED => self::STATE_TEMPORARILY_FAILED,
2221
self::STATE_WAITING => self::STATE_WAITING,
23-
self::STATE_AMQP_FAILED => self::STATE_AMQP_FAILED
2422
];
2523

2624
const FINISHED_STATES = [
@@ -41,6 +39,7 @@ final class BackgroundJob
4139
private ?string $identifier = null;
4240
private bool $isUnique = false;
4341
private ?DateTimeImmutable $availableAt = null;
42+
private bool $processByBroker = false;
4443

4544
public function __construct()
4645
{
@@ -182,6 +181,17 @@ public function setAvailableAt(?DateTimeImmutable $availableAt): self
182181
return $this;
183182
}
184183

184+
public function getProcessByBroker(): bool
185+
{
186+
return $this->processByBroker;
187+
}
188+
189+
public function setProcessByBroker(bool $processByBroker): self
190+
{
191+
$this->processByBroker = $processByBroker;
192+
return $this;
193+
}
194+
185195
public function isReadyForProcess(): bool
186196
{
187197
return isset(self::READY_TO_PROCESS_STATES[$this->state]);
@@ -206,7 +216,8 @@ public static function createEntity(array $values): BackgroundJob
206216
$entity->identifier = $values['identifier'];
207217
$entity->isUnique = $values['is_unique'];
208218
$entity->availableAt = $values['available_at'] ? new DateTimeImmutable($values['available_at']) : null;
209-
219+
$entity->processByBroker = $values['process_by_broker'];
220+
210221
return $entity;
211222
}
212223

@@ -225,6 +236,7 @@ public function getDatabaseValues(): array
225236
'identifier' => $this->identifier,
226237
'is_unique' => (int) $this->isUnique,
227238
'available_at' => $this->availableAt ? $this->availableAt->format('Y-m-d H:i:s') : null,
239+
'process_by_broker' => (int) $this->processByBroker,
228240
];
229241
}
230242

0 commit comments

Comments
 (0)