-
Notifications
You must be signed in to change notification settings - Fork 230
DeRauk Gibble edited this page Sep 28, 2021
·
5 revisions
A simple setup with one Go worker process running 20 threads on my laptop can produce and consume over 5000 jobs/sec steadily. I've done no profiling and optimization yet so I suspect that can be improved. Help welcome.
Faktory has several advantages:
- It's language agnostic - you can run worker processes in any language you want. If your business goes polyglot, Faktory can too.
- It's designed for real-world business apps - you write the jobs, it gives you error handling, the retry process and a very useful Web UI.
- It's all built in - one server binary manages it all: data storage, web UI, etc. No other dependencies; just run a worker process to execute jobs.
faktory_worker_ruby and faktory_worker_go both have Travis-CI set ups for running your test suite against a real Faktory. They do this by running the official contribsys/faktory Docker image.
- If a worker process FETCHes a job, it has 30 minutes by default to ACK that job.
- If the process dies, Faktory doesn't know that. All Faktory knows within one minute is that the process has not sent a heartbeat. It might be alive (network dropped) or it might be dead (process crashed).
- Since the process might still be alive, Faktory sticks with (1) and does not immediately clear the Busy tab. The network can come back up, the worker process ACK the job and all will be well.
- After 30 minutes, Faktory will reclaim the job and put it into the Retry set so the job can be retried in the future. This "reservation reaper" runs every 15 seconds.
Home | Installation | Getting Started Ruby | Job Errors | FAQ | Related Projects
This wiki is tracked by git and publicly editable. You are welcome to fix errors and typos. Any defacing or vandalism of content will result in your changes being reverted and you being blocked.