{"id":45999159,"url":"https://github.com/workerframework/worker-message-prioritization","last_synced_at":"2026-05-26T09:01:26.654Z","repository":{"id":77302782,"uuid":"589941382","full_name":"WorkerFramework/worker-message-prioritization","owner":"WorkerFramework","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-26T07:19:44.000Z","size":773,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-26T08:25:12.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":false,"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/WorkerFramework.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-17T09:55:43.000Z","updated_at":"2026-05-26T07:19:47.000Z","dependencies_parsed_at":"2023-09-29T12:06:08.637Z","dependency_job_id":"c9077efb-9edb-4240-bb81-8e14da2ac46c","html_url":"https://github.com/WorkerFramework/worker-message-prioritization","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/WorkerFramework/worker-message-prioritization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorkerFramework%2Fworker-message-prioritization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorkerFramework%2Fworker-message-prioritization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorkerFramework%2Fworker-message-prioritization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorkerFramework%2Fworker-message-prioritization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WorkerFramework","download_url":"https://codeload.github.com/WorkerFramework/worker-message-prioritization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WorkerFramework%2Fworker-message-prioritization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33512327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: 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":[],"created_at":"2026-02-28T22:03:12.663Z","updated_at":"2026-05-26T09:01:26.648Z","avatar_url":"https://github.com/WorkerFramework.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# worker-message-prioritization\n\nThe project attempts to _fairly_ distribute work to workers built with the \n[Document Worker Framework](https://github.com/CAFDataProcessing/worker-document).\nIn this context, the definition of fair is:-\n\n_Each worker will receive a roughly equal number of messages from each staging \nqueue, since the processing of each message is dependent on the complexity of the message the actual amount of \nprocessing time allocated to each staging queue may be unfair._\n\nIn FAS the [Workflow Worker](https://github.houston.softwaregrp.net/Verity/darwin-worker-workflow) attaches a script \nto DocumentWorkerTask which uses the AfterProcessTaskEvent to route the output message to the next appropriate worker \nin the workflow. The MessageRouter modifies this behaviour, choosing to reroute the message to a staging queue instead \nof the original target queue.\n\nThese **staging queue** names follow a naming convention that incorporates the original queue name followed by \"»\" and \nadditional discriminators. For example a target queue **worker-input** could result in a staging queue with the tenant \nid and workflow name added to it resulting **worker-input»tenant1/workflow1**. \nThis mutation of the original target queue is performed by QueueNameMutator implementations and is intended to be \nextensible with different mutators for different worker types. \n\nThe **MessageDistributor** uses the RabbitMq management API to retrieve a list of queues matching the naming convention \nof the above staging queues. It obtains information about the target of these staging queues such as the current queue\nsize and what (if any) capacity it has for new messages. If a target queue has capacity it is divided by the number of \nstaging queues and that number of messages is attempted to be moved from the staging queue to the worker input queue.\n\nAt present there is one implementation of MessageDistributor, the low-level RabbitMQ client to consume \nmessages from a staging queue and publish them to the worker input queue. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkerframework%2Fworker-message-prioritization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworkerframework%2Fworker-message-prioritization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkerframework%2Fworker-message-prioritization/lists"}