Coder Social home page Coder Social logo

recruiter's Introduction

Disclaimer

This is a work in progress not ready to be used or seen. This work is sponsored by Onebip

Recruiter

It's a Job Queue Manager built with PHP meant to be used in PHP projects. Features and characteristics:

  • Jobs are made persistent on MongoDB
  • Jobs are retriable with complex and customizable strategies
  • Multiple queues are supported through tagging
  • Jobs are stored by default in an history collection for after the fact inspection and analytics
  • Built to be robust, scalable and fault tolerant

History

Onebip is a payment system (think PayPal with mobile devices in place of credit cards), things like: payment notifications, subscription renewals, remainder messages, โ€ฆ are really important. You cannot skip or lose a job (notification are idempotent but payments are not). You cannot forgot to have completed a job (customer/merchant support must have data to do their job). You need to know if and when you can retry a failed job (external services have rate limits and are based on agreements/contracts). We have developed internally our job/queue solution called Recruiter. After a year in production and many billions of jobs we have decided to put what we have learned into a stand alone project and to make it available to everyone.

recruiter's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

recruiter's Issues

Timezone switch bug

The function \Recruiter\RetryPolicy\TimeTable::estimateHowManyRetriesIn assumes that the default timezone is UTC (which should be the best practice).

In case the default timezone is different than UTC (please refer to date_default_timezone_get() to known the default time zone of your PHP runtime) the estimateHowManyRetriesIn will fall in a subtle bug which causes a time travel in the future when an amount of time is subtracted from another instance of time (at [1] you can read one of the many reports about this bug).

Please note that supporting only UTC is a good idea. Maybe we should just check the result of the function date_default_timezone_get and if it is different from UTC we should throw an exception.

[1] - https://bugs.php.net/bug.php?id=68286

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.