Skip to content

Make Nexus work out of the box with zero config #8298

@bergundy

Description

@bergundy

Start with

  • Allow temporal://system URLs always to be attached as callbacks.
  • Dispatch temporal://system callback URLs internally, automatically (see link below).

Then

Then update the SPEC and Nexus SDKs

  • In the Nexus SPEC.md, call out that the Nexus-Callback-Token is a standard header and that it is required as part of the StartOperation request.
  • In the Nexus SDKs (start with Go), add a CallbackToken []byte (or string TBD) field in StartOpertionOptions (called details, context) in the other SDKs.

Once the server can handle these new URLs, switch to using them

  • Behind a dynamic config, which can be deprecated in a few releases.
  • Default the server's callback URL to temporal://system.
    • The callback URL template, must be provided when making "external" calls but "worker" endpoints should use the temporal://system callback URL.
  • Figure out how to make this work in Cloud.

Reference

return func(r *http.Request) (*http.Response, error) {

case *persistencespb.NexusEndpointTarget_External_:
url = variant.External.GetUrl()
var err error
httpClient, err = m.Get(clientProviderCacheKey{namespaceID, entry.Id, url})
if err != nil {
return nil, err
}
case *persistencespb.NexusEndpointTarget_Worker_:
url = cl.BaseURL() + "/" + commonnexus.RouteDispatchNexusTaskByEndpoint.Path(entry.Id)
httpClient = &cl.Client

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions