-
Notifications
You must be signed in to change notification settings - Fork 8
Update MicroProfile Tutorial to MP 7.1 #1104
Description
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