Skip to main content
The Matching Service manages task queues and distributes workflow and activity tasks to workers. It provides load balancing, task versioning, and worker management capabilities.

Overview

The Matching Service is responsible for:
  • Managing task queues for workflows and activities
  • Distributing tasks to available workers
  • Task queue partitioning and load balancing
  • Worker versioning and build ID compatibility
  • Task queue user data and configuration
  • Nexus endpoint management
  • Worker heartbeat and health tracking

Service Methods

Task Polling

PollWorkflowTaskQueue

Polls for a workflow task from a task queue.
string
required
UUID of the namespace
string
required
Unique identifier for the worker polling
PollWorkflowTaskQueueRequest
required
Poll parameters including task queue name and worker identity
string
Source partition if forwarded from another partition
bytes
Opaque token identifying the task
WorkflowExecution
Workflow execution information
WorkflowType
Type of the workflow
int64
Event ID when task started
History
Workflow history events for the task

PollActivityTaskQueue

Polls for an activity task from a task queue.
string
required
Namespace UUID
string
required
Unique poller identifier
PollActivityTaskQueueRequest
required
Poll parameters
string
Source partition if forwarded
bytes
Task token
WorkflowExecution
Parent workflow execution
string
Activity identifier
ActivityType
Type of activity
Payloads
Activity input parameters
Timestamp
When the activity was scheduled
Timestamp
When current attempt was scheduled

PollNexusTaskQueue

Polls for a Nexus task from a task queue.
string
required
Namespace UUID
PollNexusTaskQueueRequest
required
Poll request with task queue and worker identity
bytes
Token for the Nexus task
Request
Nexus request details

Task Addition

AddWorkflowTask

Adds a workflow task to a task queue.
string
required
Namespace UUID
WorkflowExecution
required
Workflow execution identifier
TaskQueue
required
Target task queue
int64
required
Event ID when task was scheduled
TaskSource
Source of the task (history, backlog)
string
Source if forwarded from another partition
AddWorkflowTaskResponse
Empty response on success

AddActivityTask

Adds an activity task to a task queue.
string
required
Namespace UUID
WorkflowExecution
required
Parent workflow execution
TaskQueue
required
Target task queue
int64
required
Event ID when activity was scheduled
TaskSource
Task source
string
Forwarding source partition
AddActivityTaskResponse
Empty response on success

Query Management

QueryWorkflow

Forwards a workflow query to a worker.
string
required
Namespace UUID
TaskQueue
required
Task queue where workflow is processing
QueryWorkflowRequest
required
Query parameters
string
Source partition
Payloads
Result of the query
QueryRejected
Rejection details if query was rejected

RespondQueryTaskCompleted

Records completion of a query task.
string
required
Namespace UUID
TaskQueue
required
Task queue
string
required
Query task identifier
RespondQueryTaskCompletedRequest
required
Completion details

Nexus Operations

DispatchNexusTask

Dispatches a Nexus task to a worker.
string
required
Namespace UUID
TaskQueue
required
Target task queue
Request
required
Nexus request to dispatch
Response
Nexus response from worker

RespondNexusTaskCompleted

Records successful completion of a Nexus task.
string
required
Namespace UUID
bytes
required
Nexus task token
Response
required
Task response

RespondNexusTaskFailed

Records failure of a Nexus task.
string
required
Namespace UUID
bytes
required
Nexus task token
Error
required
Failure error details

Nexus Endpoint Management

CreateNexusEndpoint

Creates a new Nexus endpoint.
EndpointSpec
required
Endpoint specification including name, target
Endpoint
Created endpoint with assigned ID

UpdateNexusEndpoint

Updates an existing Nexus endpoint.
string
required
Endpoint ID
int64
required
Current version for optimistic concurrency
EndpointSpec
required
Updated endpoint specification
Endpoint
Updated endpoint

DeleteNexusEndpoint

Deletes a Nexus endpoint.
string
required
Endpoint ID to delete
int64
required
Current version
DeleteNexusEndpointResponse
Empty response on success

ListNexusEndpoints

Lists all Nexus endpoints.
int32
Maximum endpoints per page
bytes
Pagination token
Endpoint[]
List of endpoints
bytes
Token for next page

Task Queue Description

DescribeTaskQueue

Retrieves information about a task queue.
string
required
Namespace UUID
DescribeTaskQueueRequest
required
Description request with task queue name and type
PollerInfo[]
List of active pollers
TaskQueueStatus
Task queue status including backlog
TaskQueueVersionInfo[]
Version information for versioned task queues

DescribeTaskQueuePartition

Retrieves information about a specific task queue partition.
string
required
Namespace UUID
TaskQueue
required
Task queue identifier
int32
required
Partition ID
PollerInfo[]
Pollers on this partition
PartitionConfig
Partition configuration

DescribeVersionedTaskQueues

Describes task queues with versioning information.
string
required
Namespace UUID
TaskQueue
required
Task queue name
TaskQueueVersionSelection
Version selection criteria
VersionedTaskQueueInfo[]
Information for each versioned queue

ListTaskQueuePartitions

Lists all partitions for a task queue.
string
required
Namespace name
TaskQueue
required
Task queue identifier
TaskQueuePartitionMetadata[]
Activity task queue partitions
TaskQueuePartitionMetadata[]
Workflow task queue partitions

Worker Versioning

UpdateWorkerBuildIdCompatibility

Updates build ID compatibility rules for a task queue.
string
required
Namespace UUID
string
required
Task queue name
BuildIdOp
required
Build ID operation (add, promote, mark_default)
UpdateWorkerBuildIdCompatibilityResponse
Empty response on success

GetWorkerBuildIdCompatibility

Retrieves build ID compatibility rules.
string
required
Namespace UUID
string
required
Task queue name
int32
Maximum compatibility sets to return
CompatibleVersionSet[]
Compatible version sets

UpdateWorkerVersioningRules

Updates versioning rules for workers.
string
required
Namespace UUID
string
required
Task queue name
UpdateWorkerVersioningRulesRequest
required
Versioning rules update
UpdateWorkerVersioningRulesResponse
Updated rules

GetWorkerVersioningRules

Retrieves current versioning rules.
string
required
Namespace UUID
string
required
Task queue name
VersioningAssignmentRule[]
Assignment rules
VersioningRedirectRule[]
Redirect rules

Task Queue User Data

GetTaskQueueUserData

Retrieves user data for a task queue.
string
required
Namespace UUID
string
required
Task queue name
TaskQueueUserData
User data including versioning info

UpdateTaskQueueUserData

Updates user data for a task queue.
string
required
Namespace UUID
string
required
Task queue name
TaskQueueUserData
required
Updated user data
string[]
Associated build IDs
UpdateTaskQueueUserDataResponse
Empty response on success

ReplicateTaskQueueUserData

Replicates task queue user data across clusters.
string
required
Namespace UUID
string
required
Task queue name
TaskQueueUserData
required
User data to replicate

Worker Management

RecordWorkerHeartbeat

Records a heartbeat from a worker.
string
required
Namespace UUID
string
required
Worker identity
string
required
Task queue the worker is polling
RecordWorkerHeartbeatResponse
Empty response on success

ListWorkers

Lists workers polling a task queue.
string
required
Namespace UUID
string
required
Task queue name
int32
Maximum workers per page
WorkerInfo[]
List of worker information

DescribeWorker

Retrieves detailed information about a worker.
string
required
Namespace UUID
string
required
Worker identity
WorkerInfo
Detailed worker information

Partition Management

ForceLoadTaskQueuePartition

Forces loading of a task queue partition.
string
required
Namespace UUID
string
required
Task queue name
int32
required
Partition to load
ForceLoadTaskQueuePartitionResponse
Empty response on success

ForceUnloadTaskQueue

Forces unloading of a task queue.
string
required
Namespace UUID
string
required
Task queue to unload
ForceUnloadTaskQueueResponse
Empty response on success

ForceUnloadTaskQueuePartition

Forces unloading of a specific partition.
string
required
Namespace UUID
string
required
Task queue name
int32
required
Partition to unload

Additional Operations

CancelOutstandingPoll

Cancels an outstanding poll request.
string
required
Namespace UUID
TaskQueueType
required
Type of task queue
TaskQueue
required
Task queue identifier
string
required
Poller to cancel

GetBuildIdTaskQueueMapping

Retrieves mapping between build IDs and task queues.
string
required
Namespace UUID
string
required
Build ID to query
string[]
Task queues associated with the build ID

UpdateTaskQueueConfig

Updates configuration for a task queue.
string
required
Namespace UUID
string
required
Task queue name
TaskQueueConfig
required
Configuration to apply
UpdateTaskQueueConfigResponse
Empty response on success

Usage Notes

  • Long polling is used for task distribution with configurable timeouts
  • Task queue partitioning enables horizontal scaling
  • Worker versioning supports gradual rollouts and compatibility management
  • Sticky task queues improve workflow task performance
  • The service handles automatic task forwarding between partitions

See Also