1. Go to this page and download the library: Download tetthys/safejob library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tetthys / safejob example snippets
use Tetthys\SafeJob\Core\Contracts\SafeJob;
use Tetthys\SafeJob\Core\Contracts\Context;
use Tetthys\SafeJob\Core\Contracts\IdempotencyKey;
use Tetthys\SafeJob\Core\Value\Outcome;
final class ChargeWalletSafeJob implements SafeJob
{
public function __construct(
private string $chargeId
) {}
public function key(): IdempotencyKey
{
return new IdempotencyKey('charge:' . $this->chargeId);
}
public function perform(Context $ctx): Outcome
{
// Retry-safe work only:
// - idempotent DB writes
// - upserts
// - unique constraints
return Outcome::ranSuccess();
}
public function onSucceededOnce(Context $ctx): void
{
// Exactly-once side effects:
// - emit domain event
// - send notification
// - publish message
}
}
use Illuminate\Contracts\Queue\ShouldQueue;
use Tetthys\SafeJob\Integration\Laravel\Concerns\HandlesSafeJob;
use Tetthys\SafeJob\Core\Contracts\SafeJob as SafeJobContract;
final class ChargeWalletJob implements ShouldQueue
{
use HandlesSafeJob;
public function __construct(
public string $chargeId
) {}
protected function safeJob(): SafeJobContract
{
return new ChargeWalletSafeJob($this->chargeId);
}
}
protected function failurePolicy(): FailurePolicy
{
return new class implements FailurePolicy {
public function finalFailureFor(\Throwable $e): ?FinalFailure
{
if ($e instanceof BusinessRuleViolation) {
return new FinalFailure(
code: 'rule_violation',
message: $e->getMessage()
);
}
return null;
}
};
}
bash
composer migrate
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.