Add Queued A2A protocol adapter (A2A over RabbitMQ / Azure Service Bus)#5
Merged
rockfordlhotka merged 2 commits intomainfrom Mar 3, 2026
Merged
Add Queued A2A protocol adapter (A2A over RabbitMQ / Azure Service Bus)#5rockfordlhotka merged 2 commits intomainfrom
rockfordlhotka merged 2 commits intomainfrom
Conversation
Agents that communicate via RabbitMQ or Azure Service Bus (using the A2A
wire protocol over async messaging) can now register with the registry and
be discovered by clients.
New API surface:
POST /a2a/async/agents - register an agent with queue endpoint details
GET /a2a/async/agents - list/discover queued agents (paginated)
GET /a2a/async/agents/{id} - retrieve a specific queued agent card
The QueuedAgentCard extends the A2A card with a queueEndpoint object that
carries broker connection details (technology, host, port, virtualHost,
exchange, taskTopic, responseTopic for RabbitMQ; namespace and entityPath
for Azure Service Bus). All fields round-trip faithfully through
Endpoint.ProtocolMetadata (JSONB). ProtocolType stays A2A; TransportType
.Amqp and .AzureServiceBus distinguish the broker technologies.
16 integration tests cover RabbitMQ and Azure Service Bus registration,
discovery, 400/401/404 error cases, and full field round-tripping.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add docs/protocol-queued-a2a.md covering: broker technologies (RabbitMQ, Azure Service Bus), the QueuedAgentCard model and queueEndpoint fields, design decisions (why ProtocolType stays A2A, separate adapter rationale, credentials-not-stored policy, skills round-trip), and registration flow examples for both broker types with KEDA liveness patterns. Update README: - Add QueuedA2A to protocol support section with API surface summary - Extend Queue-backed agents section to show both registration paths - Add /a2a/async/agents rows to the API overview table - Update auth section's public-endpoint list - Update project structure to reflect QueuedA2A/ folders - Add link to new docs page alongside A2A/MCP/ACP Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
QueuedA2Aprotocol adapter so agents that communicate via async message brokers (RabbitMQ, Azure Service Bus) can register with the registry and be discovered by clientsPOST/GET /a2a/async/agentsandGET /a2a/async/agents/{id}QueuedAgentCardextends the A2A agent card with aqueueEndpointobject carrying broker connection details (technology, host, port, virtualHost, exchange, taskTopic, responseTopic for RabbitMQ; namespace and entityPath for Azure Service Bus)ProtocolTypestaysA2A(wire format unchanged);TransportType.AmqpandTransportType.AzureServiceBusdistinguish broker technologies — no domain layer changes requiredEndpoint.ProtocolMetadata(JSONB)docs/protocol-queued-a2a.mdand updatedREADME.mdTest plan
dotnet build— clean (warnings pre-existing)dotnet test— 125/125 pass (11 application + 114 API including 16 new QueuedA2A tests)taskTopicreturns 400GET /a2a/async/agents/{id}returns card with fullqueueEndpoint404)🤖 Generated with Claude Code