Go ActivityOptions reference
Create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package and use WithActivityOptions()
to apply it to the instance of workflow.Context
.
The instance of workflow.Context
is then passed to the ExecuteActivity()
call.
Field | Required | Type |
---|---|---|
ActivityID | No | string |
TaskQueueName | No | string |
ScheduleToCloseTimeout | Yes (or StartToCloseTimeout ) | time.Duration |
ScheduleToStartTimeout | No | time.Duration |
StartToCloseTimeout | Yes (or ScheduleToCloseTimeout ) | time.Duration |
HeartbeatTimeout | No | time.Duration |
WaitForCancellation | No | bool |
OriginalTaskQueueName | No | string |
RetryPolicy | No | RetryPolicy |
ActivityID
- Type:
string
- Default: None
activityoptions := workflow.ActivityOptions{
ActivityID: "your-activity-id",
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
TaskQueueName
- Type:
string
- Default: Inherits the TaskQueue name from the Workflow.
activityoptions := workflow.ActivityOptions{
TaskQueueName: "your-task-queue-name",
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
ScheduleToCloseTimeout
To set a Schedule-To-Close Timeout, create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package, set the ScheduleToCloseTimeout
field, and then use the WithActivityOptions()
API to apply the options to the instance of workflow.Context
.
This or StartToCloseTimeout
must be set.
- Type:
time.Duration
- Default: ∞ (infinity - no limit)
activityoptions := workflow.ActivityOptions{
ScheduleToCloseTimeout: 10 * time.Second,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
ScheduleToStartTimeout
To set a Schedule-To-Start Timeout, create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package, set the ScheduleToStartTimeout
field, and then use the WithActivityOptions()
API to apply the options to the instance of workflow.Context
.
- Type:
time.Duration
- Default: ∞ (infinity - no limit)
activityoptions := workflow.ActivityOptions{
ScheduleToStartTimeout: 10 * time.Second,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
StartToCloseTimeout
To set a Start-To-Close Timeout, create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package, set the StartToCloseTimeout
field, and then use the WithActivityOptions()
API to apply the options to the instance of workflow.Context
.
This or ScheduleToClose
must be set.
- Type:
time.Duration
- Default: Same as the
ScheduleToCloseTimeout
activityoptions := workflow.ActivityOptions{
StartToCloseTimeout: 10 * time.Second,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
HeartbeatTimeout
To set a Heartbeat Timeout, Create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package, set the RetryPolicy
field, and then use the WithActivityOptions()
API to apply the options to the instance of workflow.Context
.
activityoptions := workflow.ActivityOptions{
HeartbeatTimeout: 10 * time.Second,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
WaitForCancellation
If true
the Activity Execution will finish executing should there be a Cancellation request.
- Type:
bool
- Default:
false
activityoptions := workflow.ActivityOptions{
WaitForCancellation: false,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
OriginalTaskQueueName
activityoptions := workflow.ActivityOptions{
OriginalTaskQueueName: "your-original-task-queue-name",
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}
RetryPolicy
To set a RetryPolicy, Create an instance of ActivityOptions
from the go.temporal.io/sdk/workflow
package, set the RetryPolicy
field, and then use the WithActivityOptions()
API to apply the options to the instance of workflow.Context
.
- Type:
RetryPolicy
- Default:
retrypolicy := &temporal.RetryPolicy{
InitialInterval: time.Second,
BackoffCoefficient: 2.0,
MaximumInterval: time.Second * 100, // 100 * InitialInterval
MaximumAttempts: 0, // Unlimited
NonRetryableErrorTypes: []string, // empty
}
Providing a Retry Policy here is a customization, and overwrites individual Field defaults.
retrypolicy := &temporal.RetryPolicy{
InitialInterval: time.Second,
BackoffCoefficient: 2.0,
MaximumInterval: time.Second * 100,
}
activityoptions := workflow.ActivityOptions{
RetryPolicy: retrypolicy,
}
ctx = workflow.WithActivityOptions(ctx, activityoptions)
var yourActivityResult YourActivityResult
err = workflow.ExecuteActivity(ctx, YourActivityDefinition, yourActivityParam).Get(ctx, &yourActivityResult)
if err != nil {
// ...
}