Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

sshilko/backq

Open more actions menu

Repository files navigation

BackQ - Component

Background queue processing - publish tasks and process with workers, simplified.

  • Sending APNS push notifications (Legacy API)
  • Sending FCM push notifications to Android (GCM/FCM)
  • Sending AWS SNS push notifications via AWS SNS arn's
  • Executing Psr7\Request asynchronously via Guzzle
  • Executing any processes with symfony/process
  • Long delay scheduling via DynamoSQS Adapter and Serialized worker, for reliable long-term scheduled jobs
  • Extendable - write your own worker and use existing adapters out of the box ...

Installation

#composer self-update && composer clear-cache && composer diagnose
composer require sshilko/backq:^3.0

Example with Redis adapter and process worker

#launch local redis
docker run -d --name=example-backq-redis --network=host redis

#install library in any folder for testing
mkdir /tmp/example && cd /tmp/example
composer require sshilko/backq:^3.0

#post job to queue (schedule)
cd vendor/sshilko/backq/example/publishers/process && php redis.php && cd /tmp/example

#[debug] connect
#[debug] _connect
#[debug] putTask
#[debug] putTask is connected and ready to: write
#[debug] putTask pushed task without delay xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo
#[debug] putTask return 'xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo'
#Published process message via redis adapter as ID=xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo

#fetch job from queue (work)
cd vendor/sshilko/backq/example/workers/process && php redis.php && cd /tmp/example

#[debug] connect
#[debug] _connect
#[debug] pickTask
#[debug] pickTask blocking for 5 seconds until get a job
#[debug] pickTask reserved a job nOgykJV81g969yw2wRMF94V9KiIeKN4P
#[debug] afterWorkSuccess
#[debug] afterWorkSuccess currently 1 reserved job(s)
#[debug] afterWorkSuccess releasing completed nOgykJV81g969yw2wRMF94V9KiIeKN4P job
#[debug] Disconnecting
#[debug] Disconnecting, previously connected
#[debug] Disconnecting, state detected
#[debug] Disconnecting, state detected, queue is connected
#[debug] Disconnecting, state 0 jobs reserved and not finalized
#[debug] Disconnecting, state detected, disconnecting queue manager
#[debug] Disconnecting, successful

#verify job executed (example process worker does echo $( date +%s ) >> /tmp/test) 
cat /tmp/test

docker stop example-backq-redis

Supported queue servers

Features

Workers compatibility with adapters

Adapter / Worker FCM APNS Process Guzzle Serialized AWS SNS Closure
Beanstalkd + + + + + + +
Redis + + + + ? + +
NSQ + + + + ? + ?
DynamoSQS + + + + + ? +

Adapter implemented features

Adapter / Feature ping hasWorkers setWorkTimeout
Beanstalkd + + +
Redis + - +
NSQ + - *
DynamoSQS - - +

Worker available features

  • setRestartThreshold (limit max number of jobs cycles, then terminate)
  • setIdleTimeout (limit max idle time, then terminating)

TLDR

Backq

See /example folder for usage examples

Old version 1 detailed review

Blog post about sending Apple push notifications

Licence

MIT

Copyright 2013-2022 Sergei Shilko Copyright 2016-2019 Carolina Alarcon

About

Background tasks with workers & publishers via queues

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.