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.
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.
Integrations allow to interact with a third-party service by exposing high-level, opiniated, and production-ready Temporal workflows and activities.
Specifications bring strong consistency and a great developer experience by providing the same behavior and APIs across integrations of a same kind.
By designing integrations on top of specifications, we can expand our ecosystem quickly and efficiently. Existing specifications are only the beginning!
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.
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.
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.
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",
},
},
})
$ tsql migrations rollback --integration warehouse \
--version 20220522135835
2 migrations to roll back for warehouse:
- 20220522140548.fix_userid_pk.down.sql (applied)
- 20220522135835.init.down.sql (applied)
Temporal will roll back the migrations as shown above.
Do you confirm? Only 'yes' will be accepted to confirm.
> yes
Executing migrations:
-> Executing 20220522140548.fix_userid_pk.down.sql...
Success!
-> Executing 20220522135835.init.down.sql...
Success!
Build on top of SQL integrations, tsql
is a command-line dedicated to manage SQL operations.
It allows you to version, run, rollback, and test migrations across databases. To avoid access collisions, a remote mutex is automatically leveraged and scoped by integration and by Temporal namespace.
tsql
follows the same developer experience offered by tctl
. It's the perfect addition for engineering teams who want fault-tolerant SQL operations and consistency across all their integrations.