Temporal Land
Temporal Land is an open-source ecosystem of consistent and production-ready workflows and activities for Temporal. This lets developers benefit consistent Integrations as a Service for building reliable and scalable Cloud Platforms and Data Planes.
Useful links:
Features
-
Built for Temporal: With Temporal, developers can run fault-tolerant applications out of the box at any scale. It's the application state management platform most organizations need.
-
Production-ready integrations: Integrations allow to interact with a third-party service by exposing high-level, opiniated, and production-ready Temporal workflows and activities.
-
Rock-solid specifications: Specifications bring strong consistency and a great developer experience by providing the same behavior and APIs across integrations of a same kind.
-
Large ecosystem: By designing integrations on top of specifications, we can expand our ecosystem quickly and efficiently. Existing specifications are only the beginning!
-
Consistent event's context: Every integrations' input accepts a common
Context
, which can then be used by the integration workflows and activities. It is a dictionary of extra information that provides useful context about an event. -
Lifecycle's policies: Workflow and activity lifecycle
Policies
for an integration are set when registering it in the Temporal worker. They can be overridden by the clients when executing a workflow when allowed by the integration to do so.
Integrations
Temporal Land in a Gist
import (
"go.temporal.land/specifications/analytics"
"go.temporal.land/toolkit/event"
"go.temporal.land/toolkit/lifecycle"
)
client.ExecuteWorkflow(ctx, opts, "mailchimp.Identify", analytics.InputIdentify{
Context: event.Context{
IP: net.ParseIP("192.168.1.1"),
},
Policies: &analytics.Policies{
Request: lifecycle.ActivityPolicy{
SingleAttemptTimeout: 1 * time.Second,
RetryPolicy: &lifecycle.RetryPolicy{
BackoffCoefficient: 2,
MaximumAttempts: 10,
},
},
},
Identify: analytics.Identify{
UserID: "f373b459-0959-4217-a3a6-4d4bf4304682",
Traits: map[string]any{
"first_name": "Elliot",
"last_name": "Anderson",
"email": "elliot.anderson@evil.corp",
},
},
})
Once registered in a Temporal worker, developers can consume Integrations as a Service from any applications such as Go, Node.js, Python, Java, or PHP.
A consistent Context
across all integrations can be set to provide useful
context about an event. The integration will automatically apply it.
If allowed by the integration when registered, a client can override workflows
and activities Policies
to have full control over the event's lifecycle.
In this example, the MailChimp integration (registered as mailchimp
) leverages
the analytics
specification, which is also used by other integrations such as
Segment.
License
Repository licensed under the Mozilla Public License, version 2.0.