{"id":28158481,"url":"https://github.com/indeedeng/virgil-spring-boot-starter","last_synced_at":"2025-05-15T09:20:03.191Z","repository":{"id":54259009,"uuid":"252809316","full_name":"indeedeng/virgil-spring-boot-starter","owner":"indeedeng","description":null,"archived":false,"fork":false,"pushed_at":"2023-11-12T01:58:14.000Z","size":1904,"stargazers_count":2,"open_issues_count":6,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-07T23:40:08.343Z","etag":null,"topics":["rabbitmq","spring-boot-admin"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indeedeng.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-03T18:28:26.000Z","updated_at":"2021-04-14T14:05:28.000Z","dependencies_parsed_at":"2022-08-13T10:10:59.534Z","dependency_job_id":null,"html_url":"https://github.com/indeedeng/virgil-spring-boot-starter","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fvirgil-spring-boot-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fvirgil-spring-boot-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fvirgil-spring-boot-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fvirgil-spring-boot-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indeedeng","download_url":"https://codeload.github.com/indeedeng/virgil-spring-boot-starter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254310503,"owners_count":22049471,"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":["rabbitmq","spring-boot-admin"],"created_at":"2025-05-15T09:19:40.253Z","updated_at":"2025-05-15T09:20:03.162Z","avatar_url":"https://github.com/indeedeng.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Virgil Spring Boot Starter\n\n![OSS Lifecycle](https://img.shields.io/osslifecycle/indeedeng/virgil-spring-boot-starter.svg)\n\nVirgil is a Spring Boot Starter that is developed as a Spring Boot Admin extension and serves as a generic message\nmanager. It supports RabbitMQ with actions such as count/display/republish/drop messages on the queue.\n\nFor future releases we will consider adding in additional actions such as download/etc along with Kafka support.\n\nVirgil implements a collection of Actuator endpoints to support the queue actions, it also provides UI as Admin\nextension to interact with those Actuator endpoints.\n\nName reference: https://en.wikipedia.org/wiki/Virgil\n\n## Getting Started\n\n```\ncompile 'com.indeed:virgil-spring-boot-starter'\n```\n\n### Build Virgil UI Component\n\n#### Dev Build\n```\ngradle buildFrontEndDev\n```\n\n#### Prod Build\n```\ngradle buildFrontEndProd\n```\n\n### Setup Virgil In Your Project\n\n#### List of settings you can configure in `application.yml`\n* virgil\n    * queues\n        * \\\u003cqueue\\\u003e\n            * readName\n            * readBinderName\n            * [Optional] republishName\n            * [Optional] republishBinderName\n            * [Optional] republishBindingRoutingKey\n    * binders\n        * \\\u003cbinderName\\\u003e\n            * name\n            * type: rabbit\n            * rabbitProperties\n                * [Optional] addresses\n                * [Optional] host\n                * [Optional] port\n                * username\n                * password\n                * [Optional] virtual-host\n\nExample with Single DLQ:\n```yaml\nvirgil:\n  queues:\n    virgilDlq:\n      readName: virgil-dlq\n      readBinderName: virgilExchange\n      republishName: virgil-queue\n      republishBinderName: virgilExchange\n      republishBindingRoutingKey: test.#\n  binders:\n    virgilExchange:\n      name: virgil-exchange\n      type: rabbit\n      rabbitProperties:\n        host: virgil-rabbit\n        port: 5672\n        username: guest\n        password: guest\n        virtual-host: /\n```\n\nExample with Many DLQs:\n```yaml\nvirgil:\n  queues:\n    virgilDlq:\n      readName: virgil-dlq\n      readBinderName: virgilExchange\n      republishName: virgil-queue\n      republishBinderName: virgilExchange\n      republishBindingRoutingKey: test.#\n    virgilDlq2:\n      readName: virgil-queue\n      readBinderName: virgilExchange\n      republishName: virgil-dlq\n      republishBinderName: virgilExchange\n      republishBindingRoutingKey: dlq.#\n  binders:\n    virgilExchange:\n      name: virgil-exchange\n      type: rabbit\n      rabbitProperties:\n        host: virgil-rabbit\n        port: 5672\n        username: guest\n        password: guest\n        virtual-host: /\n```\n\n\n#### Configuration Details\n* `binders.\u003cbinderName\u003e.rabbitSetings`: if `addresses` is provided it will be used as priority over `host` and `port`.\nIf `addresses` is blank, `host` and `port` will be used. `Port` will default to `5672`.\n\n* `queues.queue`: if `republishName` and `republishBinderName` is not present, we will disable `republish` option\nper message\n\n\n* If you are using Spring Cloud Stream:\n  * If you configure `spring.cloud.stream.rabbit.bindings.input.consumer.auto-bind-dlq=true` and\n  `spring.cloud.stream.bindings.input.group=myGroup`, the format of your `DLQ`\n  should be `input.myGroup.dlq`;\n\n## Supported Functionality\n#### V1\n* One queue per application instance;\n* RabbitMQ;\n* Display total count of messages in queue;\n* Parse out text based body to be displayed\n    * Pluggable MessageConverter allows you to replace default utf8 parser with custom message parser\n        * By registering a Bean with IMessageConverter as its return type\n* Republish 1 message at a time from queue;\n* Drop 1 or all messages at a time from queue;\n* UI as Spring Boot Admin extension backed by Actuator endpoints;\n\n#### V2\nStay tuned!\n\n## UI Demo\n![alt text](https://github.com/indeedeng/virgil-spring-boot-starter/blob/master/images/home.png \"Spring Boot Admin UI\")\n![alt text](https://github.com/indeedeng/virgil-spring-boot-starter/blob/master/images/virgil.png \"Virgil UI\")\n\n## Visit actuator endpoints\n* http://localhost:8080/private/actuator-endpoint-id\n* e.g.:\n  * http://localhost:8080/private/virgil/get-queue-size\n  * http://localhost:8080/private/virgil/publish-message\n  * http://localhost:8080/private/virgil/drop-all-messages\n  * http://localhost:8080/private/virgil/drop-message\n  * http://localhost:8080/private/virgil/get-dlq-messages\n\n## How To Contribute\n\nIf you’d like to contribute, please open an issue describing what you want to change and why, or comment on an existing issue. We’d love to have you.\n\n## Project Maintainers\n\n* [Richard Cen](https://github.com/RichardCen), Indeed Software Engineers\n* [reedyrm](https://github.com/reedyrm), Indeed Software Engineers\n\n\n## Code of Conduct\nThis project is governed by the [Contributor Covenant v 1.4.1](CODE_OF_CONDUCT.md).\n\n## License\nThis project uses the [Apache 2.0](LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fvirgil-spring-boot-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findeedeng%2Fvirgil-spring-boot-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fvirgil-spring-boot-starter/lists"}