{"id":23740131,"url":"https://github.com/cobbzilla/rooty-tooty","last_synced_at":"2026-03-03T21:30:21.738Z","repository":{"id":148813979,"uuid":"20310269","full_name":"cobbzilla/rooty-tooty","owner":"cobbzilla","description":"an MQ-based event bus for delegating priviledged tasks to various daemons","archived":false,"fork":false,"pushed_at":"2015-08-19T11:32:13.000Z","size":304,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-31T09:47:06.407Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/cobbzilla.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}},"created_at":"2014-05-29T22:27:35.000Z","updated_at":"2015-03-06T11:42:56.000Z","dependencies_parsed_at":"2023-04-04T21:33:24.851Z","dependency_job_id":null,"html_url":"https://github.com/cobbzilla/rooty-tooty","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbzilla%2Frooty-tooty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbzilla%2Frooty-tooty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbzilla%2Frooty-tooty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobbzilla%2Frooty-tooty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cobbzilla","download_url":"https://codeload.github.com/cobbzilla/rooty-tooty/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239886392,"owners_count":19713480,"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":"2024-12-31T09:47:16.050Z","updated_at":"2026-03-03T21:30:21.661Z","avatar_url":"https://github.com/cobbzilla.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rooty-tooty\n\nAn MQ-based message bus for informing various daemons when things need to get done.\n\n## Usage\n\n### Send an event to the bus\n\n    RootyConfiguration config = new RootyConfiguration()\n        .withSecret(secretKey)\n        .withQueueName(qName);\n\n    RootySender sender = config.getSender();\n    \n    RootyMessage message = new NewAccountEvent(accountName);\n    sender.write(message);\n\n### Receive events from the bus\n\n#### Define a class that extends RootyHandlerBase\n\n    public class MyHandler extends RootyHandlerBase {\n        // handlers can have attributes, set in their config (see below)\n        private boolean debug;\n        public void setDebug (boolean debug) { this.debug = debug; }\n\n        // declare which message types this class can handle\n        @Override public boolean accepts(RootyMessage message) { return message instanceof NewAccountEvent; }\n\n        // called when an acceptable message is ready to be processed\n        @Override public void process(RootyMessage message) {\n            NewAccountEvent event = (NewAccountEvent) message;\n            // ... handle the event ...\n        }\n    }\n\n#### Start the rooty daemon from the command line\n\nCreate a YAML config file:\n\n    queueName: someQueueName+dns\n    secret: yourSecretKey\n    \n    handlers:\n      MyHandler:   # fully-qualified Java class name here\n        params:    # params will be copied to JavaBean-style attributes on the handler class\n          debug: true\n      # multiple handlers can be listed\n\nStart RootyMain like this:\n\n    java rooty.RootyMain /path/to/config.yml\n\nEnsure your CLASSPATH includes both:\n\n* the appropriate rooty-tooty.jar file\n* the jar file that contains the MyHandler class\n\n#### Or, start the rooty daemon from code\n\n    RootyHandlerConfiguration handlerConfig = new RootyHandlerConfiguration()\n        .withHandler(MyHandler.class.getName())\n        .withParam(\"debug\", true);\n\n    RootyConfiguration config = new RootyConfiguration()\n        .withSecret(secretKey)\n        .withQueueName(qName)\n        .addHandler(handlerConfig);\n\n    RootyMain daemon = new RootyMain();\n    daemon.run(config); // async: will start a listener thread and return\n\n##### License\nFor personal or non-commercial use, this code is available under the [GNU Affero General Public License, version 3](https://www.gnu.org/licenses/agpl-3.0.html).\nFor commercial use, please contact cloudstead.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobbzilla%2Frooty-tooty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcobbzilla%2Frooty-tooty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobbzilla%2Frooty-tooty/lists"}