{"id":17274457,"url":"https://github.com/codedrivenmitch/axon-open-admin","last_synced_at":"2026-01-11T17:41:57.900Z","repository":{"id":37801549,"uuid":"370003305","full_name":"CodeDrivenMitch/axon-open-admin","owner":"CodeDrivenMitch","description":"Axon Open Admin","archived":false,"fork":false,"pushed_at":"2025-01-23T15:54:32.000Z","size":1454,"stargazers_count":24,"open_issues_count":10,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-05T14:48:01.872Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/CodeDrivenMitch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-23T08:51:28.000Z","updated_at":"2025-07-24T21:00:51.000Z","dependencies_parsed_at":"2025-04-14T08:53:38.386Z","dependency_job_id":"508e9978-f9b8-4830-8195-faf41d8d1c04","html_url":"https://github.com/CodeDrivenMitch/axon-open-admin","commit_stats":null,"previous_names":["codedrivenmitch/axon-open-admin","morlack/axon-open-admin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CodeDrivenMitch/axon-open-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeDrivenMitch%2Faxon-open-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeDrivenMitch%2Faxon-open-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeDrivenMitch%2Faxon-open-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeDrivenMitch%2Faxon-open-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeDrivenMitch","download_url":"https://codeload.github.com/CodeDrivenMitch/axon-open-admin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeDrivenMitch%2Faxon-open-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006747,"owners_count":26084181,"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-10-11T02:00:06.511Z","response_time":55,"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-10-15T08:53:58.786Z","updated_at":"2025-10-11T09:36:32.371Z","avatar_url":"https://github.com/CodeDrivenMitch.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Axon Open Admin\n\n[Axon Framework](https://developer.axoniq.io/axon-framework/overview) is one of the best CQRS/ES frameworks in the\nmarket today.\nAnd with Axon Open Admin, the management your Axon Framework application becomes much easier.\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.insidion/axon-open-admin-starter/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.insidion/axon-open-admin-starter)\n\nSpring Boot 3 is supported by 0.3.0 and up. For Spring Boot 2, use 0.2.8.\n\n## Features\n\nAfter including this Spring Boot 3 starter in your application it will allow you to:\n\n- Pause/resume event processor\n- Split and merge segments\n- Trigger Replays\n- Detect malfunctions and show them to you\n  - Unclaimed tokens\n  - Multiple token stores\n  - Token stealing\n  - Thread starvation in your processors\n- Easily show you metrics in the right places\n- Give you insight into how different messages correlate to each other\n\n### Processor management\n\nThis is the main overview of your application. It shows the segments that are currently being processed by what nodes.\nThe screen allows you to manage each processor: start/stop the processor, split/merge segments or replay the event\nprocessor.\n\n![](.github/teaser.png)\n\n### Dead-Letter Queue insight and actions\n\nWhen a DLQ is configured for a processor, you can explore the items in the DLQ and take actions. You can delete the\nentire sequence,\nretry the entire sequence, or evict the first message of the sequence and retry the others.\n\n![](.github/dlq.png)\n\nWhen a DLQ is configured, starting a replay will give you the option to clear the queue. The framework does not do this\nby default.\n\n### Actions\n\nThe application is smart enough to determine what actions need to be taken to achieve a desired result.\nIt will show you the progress.\n\n![](.github/commands.png)\n\n### Decentralized\n\nThere is no central backend that acts as a central communication node. The starter is built\nso that no additional deployment is needed in your infrastructure.\n\nThe calls that are handled by the starter's backend are highly performant, allowing the front-end to poll\nin quick succession without big penalties.\nWhen all nodes of an application is behind a round-robin load balancer,\nit's able to pick them all up quickly.\n\nWhen you want to execute a certain action from the interface, the command is sent with the chosen node in mind.\nIf it hits, great! If it doesn't, it tries again. This way the starter works without a\ndesignated backend, but all nodes need to be reachable on the base url using a round-robin load balancer.\n\n### Multiservice aware\n\nIt's useful to have multiple of the services in your landscape managed by the same Axon Admin, especially if they send\nmessages to each other. Axon Open Admin will provide you insight into the flow of your messages between them if you do\nso.\n\n![](.github/insight.png)\n\nBy default, it will poll the service you have included the starter in.\nYou can include additional ones, providing the name and one or more urls at which they can be reached.\nThe syntax is `axon.admin.servers.[service_name]=[comma_separated_urls]`.\n\n```properties\naxon.admin.servers.booking=http://my-awesome-domain.com/booking/axon-admin\naxon.admin.servers.inventory=http://my-awesome-domain.com/inventory/axon-admin,http://my-awesome-domain.com/inventory2/axon-admin\n```\n\nNote that the urls must be reachable from your browser. When multiple URLs are configured, the first successful one will\nbe used.\n\n## Event Exploration\n\nYou can also explore your Eventstore in Axon Admin. You can either tail the event log (last x events), can specify\na date range to retrieve or find the events of your aggregate.\n\n![](.github/eventpage.png)\n\n# How to install\n\nAdd the following dependency to your maven project:\n\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.insidion\u003c/groupId\u003e\n    \u003cartifactId\u003eaxon-open-admin-starter\u003c/artifactId\u003e\n    \u003cversion\u003e0.2.8\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nWhen your application now boots you can access the administration interface at `/(your-context-path)/axon-admin/`.\nIf you are unsure, the boot log of your application will contain the precise path.\nEnjoy!\n\nWe recommend configuring Spring Boot Security to secure these endpoints, as they are open to abuse.\n\n# Considerations\n\nThere are a few things to keep in mind if you are planning on using this library:\n\n- It only supports Axon 4.6. We are currently not planning on supporting older versions\n- There is a known issue with `spring-boot-devtools`. With devtools enabled your application will fail to boot.\n- All nodes need to be reachable from the front-end you are accessing.\n  If some other node is behind another load balancer, the application will not be able to take actions.\n\n# Notable references\n\nI started Axon Open Admin while working at [codecentric Netherlands](https://codecentric.nl). I want to thank them for\nthe time they let me put into it!\n\nIn addition, at codecentric we blog about certain challenges or opportunities we encounter when using Axon Framework.\nCurrently, we have the following published:\n\n- [Replaying for a single aggregate in Axon Framework](https://blog.codecentric.nl/mitchellherrijgers/replaying-for-a-single-aggregate-in-axon-framework-126m)\n- [Dealing with personal data in Axon Framework](https://blog.codecentric.nl/mitchellherrijgers/axon-framework-dealing-with-personal-data-3amp)\n- [Taking advantage of Metadata in Axon Framework](https://blog.codecentric.nl/mitchellherrijgers/taking-advantage-of-metadata-in-axon-framework-3da9)\n\nTake a look if you're interested. Happy reading!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedrivenmitch%2Faxon-open-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodedrivenmitch%2Faxon-open-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedrivenmitch%2Faxon-open-admin/lists"}