{"id":28559073,"url":"https://github.com/toastdriven/takeanumber","last_synced_at":"2025-07-16T01:49:09.862Z","repository":{"id":26777115,"uuid":"30235247","full_name":"toastdriven/takeanumber","owner":"toastdriven","description":"A simplistic queue server written in Go.","archived":false,"fork":false,"pushed_at":"2015-02-11T09:45:11.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-07T16:54:58.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://godoc.org/github.com/toastdriven/takeanumber","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toastdriven.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}},"created_at":"2015-02-03T09:30:58.000Z","updated_at":"2015-02-11T09:45:10.000Z","dependencies_parsed_at":"2022-08-31T08:20:17.856Z","dependency_job_id":null,"html_url":"https://github.com/toastdriven/takeanumber","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Ftakeanumber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Ftakeanumber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Ftakeanumber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Ftakeanumber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toastdriven","download_url":"https://codeload.github.com/toastdriven/takeanumber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Ftakeanumber/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259039600,"owners_count":22796870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-06-10T08:36:02.082Z","updated_at":"2025-06-10T08:36:07.131Z","avatar_url":"https://github.com/toastdriven.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# takeanumber\n\nA simplistic queue server written in Go.\n\n`takeanumber` is an in-memory networked queue server, allowing you to delay\nprocessing by storing messages in one process \u0026 consuming those messages in\nother processes.\n\nThis is especially useful in web applications, allowing you to take non-critical\nprocessing out of the request-response cycle, though there are many other\napplications.\n\n`takeanumber` exposes its functionality over a plain-text protocol via a TCP\nsocket. These messages conform to a subset of the Redis Serialization Protocol\n(http://redis.io/topics/protocol), so in theory an existing Redis client may\nbe able to talk to `takeanumber`.\n\n\n## Quickstart\n\nStarting a server (on localhost, port `13331`):\n\n    $ takeanumber -p 13331\n\nYou can then use tools like `telnet` to talk to `takeanumber`. Here's a sample\nsession:\n\n    $ telnet localhost 13331\n    LEN my_queue\n    :0\n    ADD my_queue 0 Hello, world!\n    +bb713fbe-3c82-41c9-94f0-43c499bfac8c\n    ADD my_queue 3 {\"user_id\": 5, \"action\": \"send_welcome_email\"}\n    +4aaf88df-390b-4a0a-8352-1fe258d94d3d\n    LEN my_queue\n    :2\n    RESERVE my_queue\n    +bb713fbe-3c82-41c9-94f0-43c499bfac8c Hello, world!\n    DONE my_queue bb713fbe-3c82-41c9-94f0-43c499bfac8c\n    +OK\n    LEN my_queue\n    :1\n    RESERVE my_queue\n    +4aaf88df-390b-4a0a-8352-1fe258d94d3d {\"user_id\": 5, \"action\": \"send_welcome_email\"}\n    RETRY my_queue 4aaf88df-390b-4a0a-8352-1fe258d94d3d\n    +OK\n    LEN my_queue\n    :1\n    CLOSE\n\nThis session did the following:\n\n* Checked the length of queue, bringing it into existence if not present\n* Added a \"Hello, world!\" message to the queue with no retries\n* Added a JSON message to the queue with 3 retries\n* Verified the length of the queue\n* Reserved the first item for processing then marked it as done\n* Reserved the second item, then marked it to be retried\n* Verified the message was in the queue\n* Closed the session\n\n\n## Building\n\n`takeanumber` was built using Go 1.4+.\n\n    $ go get code.google.com/p/go-uuid/uuid\n    $ go build takeanumber.go\n\n\n## License\n\nNew BSD\n\n\n## Benchmarks\n\nTBD\n\n\n## TODO\n\n* STATS command \u0026 statistics tracking\n* QUEUES command to return the queue names\n* Proper Go-based benchmarks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoastdriven%2Ftakeanumber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoastdriven%2Ftakeanumber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoastdriven%2Ftakeanumber/lists"}