Temporal: How to create a namespace progmatically?

Viewed 1213

It is possible to create a namespace via the CLI, but how to do it using Java SDK?

1 Answers

Programmatically it is done through gRPC API exposed by the service.

In Java the generated gRPC client is accessible through WorkflowServiceStubs:

WorkflowServiceStubs service =
    WorkflowServiceStubs.newInstance(
        WorkflowServiceStubsOptions.newBuilder().setTarget(serviceAddress).build());
RegisterNamespaceRequest request =
    RegisterNamespaceRequest.newBuilder()
        .setNamespace(NAMESPACE)
        .setWorkflowExecutionRetentionPeriod(Durations.fromDays(7))
        .build();
service.blockingStub().registerNamespace(request);

In Go SDK you can use higher-level NamespaceClient:

client, err := client.NewNamespaceClient(client.Options{HostPort: ts.config.ServiceAddr})
    ...
err = client.Register(ctx, &workflowservice.RegisterNamespaceRequest{
    Name:                             name,
    WorkflowExecutionRetentionPeriod: &retention,
})

OP and additional discussion here.

Related