{"id":18763726,"url":"https://github.com/inloop/go-transport-queue","last_synced_at":"2025-12-06T05:30:27.916Z","repository":{"id":77722227,"uuid":"102833259","full_name":"inloop/go-transport-queue","owner":"inloop","description":"Queue for transporting large batch of messages with specific interval and batch size.","archived":false,"fork":false,"pushed_at":"2018-02-21T10:44:11.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-20T19:29:34.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inloop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2017-09-08T07:40:22.000Z","updated_at":"2018-02-21T10:45:27.000Z","dependencies_parsed_at":"2023-07-31T02:19:23.015Z","dependency_job_id":null,"html_url":"https://github.com/inloop/go-transport-queue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/inloop/go-transport-queue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inloop%2Fgo-transport-queue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inloop%2Fgo-transport-queue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inloop%2Fgo-transport-queue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inloop%2Fgo-transport-queue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inloop","download_url":"https://codeload.github.com/inloop/go-transport-queue/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inloop%2Fgo-transport-queue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27535808,"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","status":"online","status_checked_at":"2025-12-06T02:00:06.463Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-07T18:27:15.421Z","updated_at":"2025-12-06T05:30:27.592Z","avatar_url":"https://github.com/inloop.png","language":"Go","readme":"# go-transport-queue\n\nQueue for transporting large batch of messages with specific interval and batch size.\n\n# Usage\n\nFor SMTP transport queue:\n\n```\ngo-transport-queue --port 3000 --interval 1s --batch-size 10 --transport smtp --smtp-url smpt://user:pass@example.com:25 --smpt-sender no-reply@example.com\n```\n\nThen you can push messages to REST api:\n\n```\ncurl -X POST \\\n  http://localhost:3000/push \\\n  -H 'content-type: application/json' \\\n  -d '{\"recipients\":[\"john.doe@example.com\"],\"subject\":\"Test email\",\"message\":\"Hello from mail queue\"}'\n```\n\n## Priority\n\nYou can prioritize messages by providing `?priority=N` (default: `0`). Messages are sorted by priority in descending order.\n\n```\ncurl -X POST \\\n  http://hostname:3000/push?priority=5 \\\n  -H 'content-type: application/json' \\\n  -d '{\n\t\"recipients\":[\"john.doe@example.com\"],\n\t\"subject\":\"Test email\",\n\t\"message\":\"Hello from mail queue\"\n}'\n```\n\n# Use cases\n\nYou have SMTP server with port throttling and you can send 10 messages per second.\n\n```\ngo-transport-queue --interval 1s --batch-size 10 --transport smtp\n```\n\nYou want to spread your notification load for FCM server to 1200 messages per minute:\n\n```\ngo-transport-queue --interval 1s --batch-size 20 --transport fcm\n```\n\n# Configuration\n\n## General\n\n* `transport,t` (envvar `TRANSPORT`, required) - type of transport\n* `data-path` (envvar `DATA_PATH`, default `/data`) - data storage location\n* `batch-size,b` (envvar `BATCH_SIZE`, default `100`) - maximum number of messages per batch\n* `interval,i` (envvar `INTERVAL`, default `100ms`) - time interval between batches\n\n## Transports\n\nTransports handle parsing incoming request and message delivery. Currently 3 transport types are supported: `log`, `smtp`, `fcm`\n\n### log transport\n\nThis is easy transport for debugging purposes. Request body:\n\n```\n{\n  \"message\":\"log message\"\n}\n```\n\n### smtp transport\n\nThis is easy transport for debugging purposes. Request body:\n\n```\n{\n  \"from\":\"no-reply@example.com\",\n  \"to\":[\"john.doe@example.com\"],\n\t\"subject\":\"Test email\",\n\t\"text\":\"Hello from mail queue\"\n\t\"html\":\"\u003cb\u003eHello\u003c/b\u003e from mail queue\"\n}\n```\n\nConfig variables:\n\n* `smtp-url` (envvar `SMTP_URL`) - SMTP configuration in url format\n\n### fcm transport\n\nFirebase Cloud Messaging transport. Request body:\n\n```\n{\n\t\"recipients\":[\"fcm_token1\",\"fcm_token2\"],\n\t\"data\":{\n    \"xx\":\"aa\"\n  },\n\t\"notification\":{\n    \"title\":\"transport queue\",\n    \"body\":\"hello world\",\n    \"icon\":\"default.png\",\n    \"badge\":\"1\"\n    \"sound\":\"default\",\n    \"color\":\"\",\n    \"click_action\":\"\",\n    \"body_loc_key\":\"\",\n    \"body_loc_args\":\"\",\n    \"title_loc_key\":\"\",\n    \"title_loc_args\":\"\"\n  }\n}\n```\n\nConfig variables:\n\n* `fcm-api-key` (envvar `FCM_API_KEY`) - Google FCM Api Key\n\n# Docker\n\nYou can start container by running:\n\n```\ndocker run --rm -p 3000:80 -v /path/to/data:/data go-transport-queue --transport log --batch-size 10 --interval 1s\n```\n\nOr by specifying environment variables:\n\n```\ndocker run --rm -p 3000:80 -e TRANSPORT=log -e BATCH_SIZE=10 -e INTERVAL=1s -v /path/to/data:/data go-transport-queue\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finloop%2Fgo-transport-queue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finloop%2Fgo-transport-queue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finloop%2Fgo-transport-queue/lists"}