Skip to content

Update MicroProfile Tutorial to MP 7.1 #1104

@Emily-Jiang

Description

@Emily-Jiang

The MicroProfile working group has agreed to update MicroProfile tutorial from 6.1 to 7.1 as well as adding 3 new chapters, detailed below:

Price: $3.5k

Objective:

Updating Official MicroProfile API Tutorial by updating as per latest MicroProfile specifications 
Adding New chapters for key MicroProfile umbrella specifications. 

Chapter Breakdown and Timeline
Updating the following chapters:
Task 1. 1: MicroProfile Rest Client 4.0

Scope:

Alignment with Jakarta EE 10 and RESTful Web services 3.1
@RestClient CDI injection

API Changes
    baseUri(String uri) - Simpler URI setup
    header(String name, Object value) - programmatically adding HTTP headers
Processing Multipart data
Custom request/response filters using @Priority
ResponseExceptionMapper - exception making across subresources interfaces

Task 1. 2: MicroProfile Open API 4.1

Scope:

Compatibility with OpenAPI v3.1
support for Java Records.
@Target annotation
JSON Schema Dialect Support via jsonSchemaDialect property
The getExtension(String) and hasExtension(String) methods of the Extensible interface
Using @Operation for Async method 
Using Optional<T> fields as nullable in the generated schema.
Using security schemes in OpenAPI docs.

Task 1. 3: New Chapter: MicroProfile Telemetry 2.1

Scope:
Introduction to Observability in Microservices

Overview of Telemetry 2.1
Jakarta EE 10 support

Core Concepts:

Span, Traces, and Context Propagation
Metrics and Instruments
Default behavior and auto discover

Project setup and Dependencies

Maven
Gradle

Tracing with MicroProfile Telemetry 2.1

Automatic span generation 
Custom span creation 
Context propagation across services
Nested and parent-child span relationships

Metrics Collection:

Overview of metrics API in OpenTelemetry
Support for metrics instruments: Counter, histogram, observable gauge
Defining and Registering Metrics
Exporting Metrics

Integration with other MicroProfile specifications

Config
OpenAPI
Health
Fault Tolerance

Configuration

Using microprofile.telemetry.* properties
Enabling exporters

Advanced Features

Using Tracer, SpanBuilder, and Span APIs

Deployment and Visualization
Visualizing traces and metrics

Task 1.4 MicroProfile Fault Tolerance 4.1
Integration with MicroProfile Telemetry 2.1

Enabling Auto-exporting Metrics

Metrics naming and scoping changes

Adding explanations about Singleton State per-method lifecycle in Circuit Breaker and Bulkhead

Adding cross-references to the new Reactive Messaging and Telemetry chapters

Task 2.0: New Chapter: MicroProfile Reactive Messaging 3.0

Scope:

Event-Driven Architecture (EDA) Overview
    Principles and benefits 
    Comparison with request-response architecture
    Common Use cases (high performance and real-time application)
Understanding Data streaming and even sourcing applications
    Using data streaming for real time processing with continuous flow of data
    Using Event Sourcing for storing changes as a sequence of events, 
    Rebuilding State from Events
Introduction to Reactive Streams
    Publisher/Subscriber
    Subscription Processor
Defining Messaging logic with CDI Beans
    Basic Structure of Messaging bean
    Leveraging CDI for dependency injection and scope management
@Channel and @Emitter support
    Named channels for message flow
Declarative Messaging 
    Consuming messages with @Incoming
    Accessing Metadata
    Producing Messages with @Outgoing
    One-to-many and many-to-one message transformations
Dealing with Backpressure
    Understanding backpressure in the context of messaging
    Automatic handling of backpressure
    Strategies for configuring backpressure behavior
Message Acknowledgments and Error Handling
    @Acknowledgement
Integration with other MicroProfile Specifications 
    Fault Tolerance
    MicroProfile Metrics 
    MicroProfile Health for Liveness and Readiness checks 
Reactive Streams Operator
Support for Connectors
    Marking method as @Blocking to run on worker thread
Support for different communication protocols
    Integrating gRPC bidirectional streaming 
    Real-time communication with WebSockets using Reactive Messaging channels
Best Practices and Design Patterns:
    Testing reactive messaging components (Using test harnesses and mock connectors)
    Structuring reactive microservices.
    Handling idempotent operations.
    Strategies for message serialization/deserialization.

    Deployment considerations.

Task 3.0: MicroProfile GraphQL 2.0

Scope:

Introduction to MicroProfile GraphQL
    What is GraphQL? 
    Key differences between REST and GraphQL
    Overview of MicroProfile GraphQL 2.0
    Schema-first approach
    Code-first approach 
Project Dependencies
    Maven
    Gradle 
Integration with MicroProfile Config
Defining GraphQL service endpoint
    Marking CDI bean as GraphQL endpoint using @GraphQLApi
    GraphQL Entities and API class
    Publishing APIs under /graphql endpoint
Annotations for defining GraphQL operations and adding metadata
    Defining read operations with @Query
    Query naming and descriptions - @Name, @Description, @DefaultValue 
    Returning POJOs, primitives, collections and type safety with POJOs
Custom Object Mapping and Field Resolution
    Using @Source to resolve nested types
    Derived/computed fields
    Avoiding N+1 queries
Error Handling and Partial Results
    Client Errors
    Server Errors (Unchecked and Checked exceptions)
    Custom error response with @GraphQLExceptionHandler
    Partial Results 
    Best Practices for error handling
Integration with OpenAPI
Deployment and Best Practices
    Caching and Batch Loading
    Optimizing Complex nested queries using @Batch
    Performance optimization
    Avoiding pitfalls with large schemas, Reducing Payload size 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions