Temporal Nexus is a new feature of the Temporal platform designed to connect durable executions across team, namespace, region, and cloud boundaries. It promotes a more modular architecture for sharing a subset of your team’s capabilities via well-defined service API contracts for other teams to use, that abstract underlying Temporal primitives, like Workflows, or execute arbitrary code.
Learn more at temporal.io/nexus.
This sample shows how to use Temporal for authoring a Nexus service and call it from a workflow.
- service - shared service definition
- caller - caller workflows, worker, and starter, which execute Nexus operations
- handler - handler workflow, operations, and worker, which defines Nexus operations and creates a Nexus service
- options - command line argument parsing utility
- Follow the instructions on the docs site to install Temporal CLI.
NOTE: The recommended version is at least v1.3.0.
temporal server start-dev
In a separate terminal window
temporal operator namespace create --namespace my-target-namespace
temporal operator namespace create --namespace my-caller-namespace
NOTE: this must be run in the
nexussample directory.
temporal operator nexus endpoint create \
--name my-nexus-endpoint-name \
--target-namespace my-target-namespace \
--target-task-queue my-handler-task-queue \
--description-file ./service/description.md
Self hosted users can try Nexus out in single cluster deployments with server version 1.25.0.
Instructions apply for local development, for Temporal Cloud or a self hosted setups, supply the relevant CLI flags to properly set up the connection.
In separate terminal windows:
cd handler
go run ./worker \
-target-host localhost:7233 \
-namespace my-target-namespace
cd caller
go run ./worker \
-target-host localhost:7233 \
-namespace my-caller-namespace
cd caller
go run ./starter \
-target-host localhost:7233 \
-namespace my-caller-namespace
which should result in:
2024/07/23 19:57:40 Workflow result: Nexus Echo 👋
2024/07/23 19:57:40 Started workflow WorkflowID nexus_hello_caller_workflow_20240723195740 RunID c9789128-2fcd-4083-829d-95e43279f6d7
2024/07/23 19:57:40 Workflow result: ¡Hola! Nexus 👋