{"id":37143437,"url":"https://github.com/tnclong/go-que","last_synced_at":"2026-01-14T16:51:21.029Z","repository":{"id":57510952,"uuid":"233392657","full_name":"tnclong/go-que","owner":"tnclong","description":"A golang background job queue that uses optimized database lock for reliability and speed.","archived":false,"fork":false,"pushed_at":"2025-04-27T07:52:57.000Z","size":58,"stargazers_count":16,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-15T05:23:23.580Z","etag":null,"topics":["background-jobs","database","golang","postgresql","queue","scheduler","uniqueness"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tnclong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-01-12T12:57:10.000Z","updated_at":"2025-04-27T07:53:01.000Z","dependencies_parsed_at":"2024-02-26T04:25:13.340Z","dependency_job_id":"7d2f837e-884d-4171-ba46-b7093f6602f2","html_url":"https://github.com/tnclong/go-que","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tnclong/go-que","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnclong%2Fgo-que","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnclong%2Fgo-que/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnclong%2Fgo-que/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnclong%2Fgo-que/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tnclong","download_url":"https://codeload.github.com/tnclong/go-que/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnclong%2Fgo-que/sbom","scorecard":{"id":890381,"data":{"date":"2025-08-11","repo":{"name":"github.com/tnclong/go-que","commit":"87f2def6b0a12cf14358201f95f29ef7db1da266"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/26 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T11:35:19.481Z","repository_id":57510952,"created_at":"2025-08-24T11:35:19.481Z","updated_at":"2025-08-24T11:35:19.481Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28426624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["background-jobs","database","golang","postgresql","queue","scheduler","uniqueness"],"created_at":"2026-01-14T16:51:20.157Z","updated_at":"2026-01-14T16:51:21.003Z","avatar_url":"https://github.com/tnclong.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Que\n#### A golang background job queue that uses optimized database lock for reliability and speed.\n\nThere are benefits of using Que to route jobs:\n\n  * **Transaction** - Controls job along with other changes to your database optional in a transaction.\n  * **Simplify Architecture** - If you're already using database, a separate queue is another moving part that can break.\n  * **Safety** - If a golang process dies, the jobs it's working won't be lost, or left in a locked or ambiguous state - they immediately become available for any other worker to pick up according to RetryPolicy.\n  * **Concurrency** - Workers don't block each other. This allows for high throughput with a large number of workers.\n  * **Uniqueness** - Controls the uniqueness of jobs in same queue.\n  * **Scheduler** - Schedule jobs uses cron expression.\n  * **Customization** - Database let you easy to customizate queue suit for your business requirement.\n\n## Install\n\n```bash\ngo get github.com/tnclong/go-que\n```\n\n## Doc\n\nhttps://godoc.org/github.com/tnclong/go-que\n\n## Quickstart\n\nStart databases:\n\n```bash\ndocker-compose up\n```\n\nIf you use PostgreSQL:\n\n```bash\n# Migrate database by your favorite tool on production\ndocker exec -i go-que_postgres_1 psql -U myuser -d mydb \u003c pg/schema.sql\nsource pg_env\n```\n\nInstall dependences:\n\n```bash\ngo get -v ./...\n```\n\nRun test:\n\n```bash\ngo test ./...\n```\n\nExample:\n\nexample_test.go\n\n## Benchmark\n\nThe purpose of benchmark:\n\n  - Guide performace improvement.\n  - Obtain a real WorkerOptions on production with accepted database resource wastage.\n\nRun bm:\n\n```bash\ncd bm\n# Adjust bm.yaml to simulate your scene.\ngo run main.go -f bm.yaml\n```\n\nOutput:\n\n```\nusing queue \"bm-e8b62c5d67bbb33e6771\"\n                      +-------------------------------------------------\n                      |                Duration (ms)                   |\n+---------+-----------+------------------------------------------------+\n| Method  |    RPS    |  avg   min   p25   p50   p75   p90   p99   max |\n+---------+-----------+------------------------------------------------+\n| Enqueue |   854.7   |   12     2     6     8    14    23    53   144 |\n| Perform |   847.7   |  241    19   105   168   311   566   786   877 |\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftnclong%2Fgo-que","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftnclong%2Fgo-que","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftnclong%2Fgo-que/lists"}