-
Notifications
You must be signed in to change notification settings - Fork 226
Description
Describe the proposal
The Quarkus Dapr Integration, which enables Quarkus users to use the Dapr APIs and Dapr Workflows is currently hosted in an external repo managed by the Quarkus Community: https://github.com/quarkiverse/quarkus-dapr
I am currently a maintainer of this repository with @mcruzdev. This repository hosts the Quarkus integration, similar to our dapr-spring/ and spring-boot-examples/ directories.
For further extensions on top of Quarkus, I recommend hosting this with the Java SDK, as we might need more control over some bits of extensions that overlap with some other Quarkus modules. This includes the Langchain4j extensions for Dapr Workflows.
Challenges
The more frameworks we integrate, the more difficult it is to align dependencies such as protobuf, netty, and grpc-related libraries. A core aspect of supporting workflows and agents is making them observable using OpenTelemetry dependencies, which, most of the time, also require alignment with protobuf and gRPC.
Structure
This proposal describes the structure of new modules released with the Java SDK to include:
- Langchain4j + Quarkus Integration modules for Dapr Workflows
- Agentic support with backed Dapr Workflows
- Agentic registration support using the StateStore API
The structure should look as follows:
/quarkus/pom.xml -> root directory + parent pom for quarkus
/quarkus/quarkus-dapr-agentic/pom.xml -> Agentic modules pom -> package: io.quarkiverse.dapr.agentic
/quarkus/quarkus-dapr-agentic/runtime/ -> package: io.quarkiverse.dapr.agentic.runtime
/quarkus/quarkus-dapr-agentic/deployment/ -> package: io.quarkiverse.dapr.agentic.deployment
/quarkus/quarkus-dapr-agentic/registry/ -> package: io.quarkiverse.dapr.agentic.registry
/quarkus/quarkus-dapr-agentic/examples/
Dependencies
Because this extension heavily relies on Langchain4j extensions and Quarkus also depends on Langchain4j, we need to keep those dependencies in alignment. There are currently ongoing efforts in the Langchain4j community to improve trace propagation at the Langchain4j level, which is crucial for Dapr Workflows to have the right context.
Some links:
- A2A trace propagation: [Feat]: Propagate open telemetry context to agent execution for consolidated tracing a2aproject/a2a-java#698 (comment)
- Quarkus MCP trace propagation: [Observability] - Auto-implement tracing/observability quarkiverse/quarkus-mcp-server#485
Relationships
WIP
