quarkus-super-heroes  by quarkusio

Microservice demo showcasing Quarkus features and best practices

created 3 years ago
333 stars

Top 83.6% on sourcepulse

GitHubView on GitHub
Project Summary

This repository provides a sample microservices application demonstrating Quarkus features and best practices for building cloud-native applications. It targets developers looking to learn or showcase Quarkus capabilities in building distributed systems with REST, gRPC, Kafka, and various persistence options. The benefit is a comprehensive, runnable example of a modern Java microservices architecture.

How It Works

The application comprises several independent microservices, including UI, Hero, Villain, Location, Fight, and Narration services, communicating via REST, gRPC, and Kafka. It showcases reactive and blocking programming models, different data stores (PostgreSQL, MariaDB, MongoDB), and integrates with external services like OpenAI and monitoring tools (Prometheus, Jaeger). Key Quarkus extensions for Kafka, Hibernate, RESTEasy Reactive, and templating are utilized.

Quick Start & Requirements

  • Docker Compose: docker compose -f deploy/docker-compose/java21.yml up --remove-orphans (for JVM) or docker compose -f deploy/docker-compose/native.yml up --remove-orphans (for native).
  • Prerequisites: Docker and Docker Compose. Java 21 is the base JVM version.
  • Resources: Requires sufficient resources for multiple running containers.
  • Links: Workshop, Pre-built Images

Highlighted Details

  • Demonstrates reactive REST endpoints with RESTEasy Reactive and Hibernate Reactive.
  • Features asynchronous communication via Kafka with Avro schemas and Apicurio Registry integration.
  • Includes contract verification tests using Pact for inter-service communication.
  • Showcases integration with OpenAI for narration and Prometheus/Jaeger for monitoring.

Maintenance & Community

This is an official Quarkus sample application. Further community engagement details are not explicitly provided in the README.

Licensing & Compatibility

The repository is licensed under the Apache License 2.0, which is permissive and suitable for commercial use.

Limitations & Caveats

Kubernetes deployment descriptors are explicitly noted as not production-ready, lacking high availability, Kubernetes operators, and using ephemeral storage for databases and Kafka.

Health Check
Last commit

3 days ago

Responsiveness

1 day

Pull Requests (30d)
59
Issues (30d)
0
Star History
19 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.